Функції дати SQL та GETDATE, пояснені прикладами синтаксису

У MySQL визначено 61 функцію дати. Не хвилюйтеся, ми не будемо переглядати їх усі тут. Цей посібник дасть вам ознайомлення з типовими та достатньою експозицією, щоб ви могли зручно досліджувати самостійно.

Ми розглянемо:

  • Отримання поточної дати
  • Дата математика
  • Дати в реченні де або, що має

Отримання поточної дати

Отримання дати з системи може бути дуже зручним для обробки даних за допомогою SQL.

-- current date select now(), sysdate(), current_date(), current_time(), -- date and time from the system on execution dayofyear(now()) as NumDaysSoFarThisYr, EXTRACT(YEAR FROM now()) as theYearPart, EXTRACT(YEAR_MONTH FROM now()) as theYrMonPart, date_format(now(), '%W %M %Y') as oneOfManyFormats; ; 

У запиті SQL ми бачимо таке:

  • Перші два стовпці результату - це два способи отримання однакової інформації: дата в системі на момент виконання SQL.
  • Наступні два стовпці вирізають лише частину дати та часу системної дати.
  • Наступний представляє “номер дня” системної дати цього року. Ви помітите, що це на один день більше, ніж математика, показана в наступному прикладі.
  • Наступні два витягують лише рік, а потім і рік, і місяць
  • Нарешті, але не менш важливим є окремий приклад одного з багатьох способів форматування цих дат.

Ви також можете використовувати GETDATE (), щоб отримати поточну дату.

Дата математика

select now(), current_date(), datediff(now(),'2017-01-01') as daysThisYear, subdate(current_date(), interval 150 day) as '150DaysAgo', adddate(now(), interval 7 day) as dateInA_Week -- date in a week ; 
зображення-1

Тут ми бачимо:

  • Перші два стовпці - це лише системна дата та час для довідки.
  • Другий стовпець - різниця дат (дата) між першим січнем 2017 року та системною датою.
  • Останні два стовпці - приклади віднімання та додавання дат.

У реченні де або, що має

Ось два приклади використання математики дати в реченні where:

select * from student; - to show the current data being used for the example select * from student where recordCreated < '2017-01-01'; select * from student where recordCreated < subdate(current_date(), interval 225 day); 

Щодо частини HAVING: Майте на увазі, більша частина логічної пропозиції WHERE також буде працювати в реченні HAVING GROUP BY. Різниця між ними полягає в тому, що речення WHERE працює проти повних даних, а HAVING - проти даних, агрегованих реченням GROUP BY.

Як і у всіх цих речей, для них є НАБАГАТО БІЛЬШЕ, ніж те, що є в цьому вступному посібнику. Сподіваюся, це принаймні дає вам достатньо для початку. Будь ласка, перегляньте посібник для вашого менеджера баз даних і отримайте задоволення, випробувавши різні варіанти самостійно.