Функції часу в SQL - Date Functions.

Матеріал представлений на сторінці взятий з ресурсу http://www.w3schools.com/sql/


лампочка

Одна з досить складних частин роботи з часом є те, що необхідно підібрати відповідний формат часу, який Ви намагаєтесь записати з форматом часу, який встановлений в таблиці Бази Даних.

Якщо дані мають лише Дні, то запити будуть працювати коректно як Ви і очікуєте. Якщо ж Ви включите в запит ще й Години, то це може привести до ускладнень.


Перед тим як переглядати, які складності можуть виникати під час роботи з часом, давайте переглянемо найбільш важливіші функції часу.

Функції Часу - MySQL Date Functions

В таблиці вказані найбільш важливіші функції часу при застосуванні Бази Даних MySQL:

ФункціяПризначення
NOW()Повертає поточний день та час
CURDATE()Повертає поточну дату
CURTIME()Повертає поточний час
DATE()Вилучає порцію дати з даних формату дата та дата/час
EXTRACT()Повертає просто частину дати/часу
DATE_ADD()Додає проміжок часу додати
DATE_SUB()Віднімає вказаний інтервал часу від дати
DATEDIFF()Повертає кількість днів між двома датами
DATE_FORMAT()Відображає дату/час в різних форматах


Типи даних Часу - SQL Date Data

База Даних MySQL вживається в слідуючому форматі типів даних Днів чи Днів/Годин:
DATE - формат YYYY-MM-DD
DATETIME - формат: YYYY-MM-DD HH:MI:SS
TIMESTAMP - формат: YYYY-MM-DD HH:MI:SS
YEAR - формат YYYY чи YY

Памятайте: Типи даних вибираються для колонок, коли створюється таблиця. Типи даних таблиці

Робота з Часом

лампочкаВи легко можете порівнювати дві дати, якщо в даних відсутні години.

Перегляньте слідуючу таблицю "Orders"(Замовлення):

OrderIdProductNameOrderDate
1Geitost2008-11-11
2Camembert Pierrot2008-11-09
3Mozzarella di Giovanni2008-11-11
4Mascarpone Fabioli2008-10-29


Вибиремо записи з таблиці "Orders"(Замовлення) з датою "2008-11-11".
Для цього запишемо слідуючий SQL-вираз:

SELECT * FROM Orders WHERE OrderDate='2008-11-11'

Результуючий запит буде мати вигляд:

OrderIdProductNameOrderDate
1Geitost2008-11-11
3Mozzarella di Giovanni2008-11-11


Але якщо наша таблиця "Orders" має ще години:

OrderIdProductNameOrderDate
1Geitost2008-11-11 13:23:44
2Camembert Pierrot2008-11-09 15:45:21
3Mozzarella di Giovanni2008-11-11 11:12:01
4Mascarpone Fabioli2008-10-29 14:56:59

і ми використаємо цей запит:

SELECT * FROM Orders WHERE OrderDate='2008-11-11'

Ми не отримаємо результатів! Причиною помилки буде те, що запит шукає дані лише Днів, а в нас формат даних Дні та Години.
Порада: Якщо бажаєте, щоб запити були прості та легкі в користуванні, бажано не включати компонент Годин.