SQL Робота з датами
SQL Дати
Найважча частина під час роботи з датами — переконатися, що формат дати, яку ви намагаєтеся вставити, відповідає формату стовпця дати в базі даних.
Поки ваші дані містять лише частину дати, ваші запити працюватимуть належним чином. Однак, якщо задіяна частина часу, це стає складнішим.
SQL Типи даних дати
MySQL поставляється з такими типами даних для зберігання дати або значення дати/часу в базі даних:
-
DATE- формат YYYY-MM-DD -
DATETIME- формат: YYYY-MM-DD HH:MI:SS TIMESTAMP- формат: YYYY-MM-DD HH:MI:SS-
YEAR- формат YYYY або YY
SQL Server поставляється з такими типами даних для зберігання дати або значення дати/часу в базі даних:
-
DATE- формат YYYY-MM-DD -
DATETIME- формат: YYYY-MM-DD HH:MI:SS -
SMALLDATETIME- формат: YYYY-MM-DD HH:MI:SS TIMESTAMP- формат: унікальне число
Примітка: Типи дат вибираються для стовпця під час створення нової таблиці в базі даних!
SQL Робота з датами
Погляньте на наступну таблицю:
Таблиця замовлень
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 |
| 2 | Camembert Pierrot | 2008-11-09 |
| 3 | Mozzarella di Giovanni | 2008-11-11 |
| 4 | Mascarpone Fabioli | 2008-10-29 |
Тепер ми хочемо вибрати записи з OrderDate "2008-11-11" із таблиці вище.
Ми використовуємо наступну інструкцію SELECT:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
Набір результатів буде виглядати так:
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 |
| 3 | Mozzarella di Giovanni | 2008-11-11 |
Примітка: Дві дати можна легко порівняти, якщо немає часової складової!
Тепер припустімо, що таблиця "Orders" виглядає так (зверніть увагу на доданий компонент часу в стовпці "OrderDate"):
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 13:23:44 |
| 2 | Camembert Pierrot | 2008-11-09 15:45:21 |
| 3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
| 4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
Якщо ми використовуємо ту саму інструкцію SELECT, що й вище:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
Ніякого результату не отримаємо! Це тому, що запит шукає лише дати без часової частини.
Порада: Щоб ваші запити були простими та легкими для обслуговування, не використовуйте компоненти часу у своїх датах, якщо це не потрібно!

