Робота з датою та часом у SQL може бути дещо складною, оскільки формати дати різняться. Наприклад, у США використовується формат дати ММ-ДД-РРРР, тоді як у Великобританії використовується формат ДД-ММ-РРРР.
Більше того, різні системи управління базами даних (СУБД) використовують різні типи даних зберігання дати та часу. Ось короткий огляд того, як дата і час зберігаються у різних СУБД.
| Приклад | Формат | SQL Server | Oracle | MySQL | PostgreSQL |
| 2022-05-12 11:35:26 | РРРР-ММ-ДД гг:хх:сс | DATETIME | TIMESTAMP | ||
| 2022-05-12 | РРРР-ММ-ДД | DATE | DATE | DATE | |
| 11:35:26 | гг:хх:сс.мс | TIME | TIME | TIME | TIME |
| 2022-04-22 11:35:26.43 | РРРР-ММ-ДД гг:хх:сс.мс | DATETIME | TIMESTAMP | ||
| 2022 | РРРР | YEAR | |||
| 12-Янв-23 | ДД-МІС-РР | TIMESTAMP |
Примітка: У кожній СУБД є багато функцій дати. Однак у цій статті ми розглянемо найчастіше використовувані функції дати в SQL Server.
Створення таблиці для зберігання дати та часу
При створенні таблиці слід вказувати тип даних для стовпця з датою. Наприклад:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
-- Створюємо таблицю з безліччю стовпців з датою CREATE TABLE Users ( id INT, username VARCHAR(50), full_name VARCHAR(50), date_of_birth DATE, last_login DATETIME, registered_at TIMESTAMP ); -- Вставляємо значення в таблицю Users INSERT INTO Users VALUES (1, 'harry', 'Harry Potter', '1999-04-14', '2022-04-22 10:34:53.44', '2020-03-15 07:31:42.23'); |
Запросити дані з використанням дат
Можна використовувати запити для отримання даних із фільтрацією за датами. Наприклад:
|
1 2 3 |
SELECT * FROM Teams WHERE registered = "2022-10-12"; |
Тут ми повертаємо команди (Teams), які були зареєстровані 2022-10-12.
Розглянемо інший приклад:
|
1 2 3 |
SELECT * FROM Teams WHERE registered > "2022-11-15"; |
Тут ми обираємо лише ті команди, які були зареєстровані після 2022-11-15.
Найчастіше використовувані функції дати в SQL Server
GETDATE()
Ця функція використовується для отримання поточної дати та часу. Наприклад:
|
1 |
SELECT GETDATE(); |
Тут ми отримуємо поточну дату та час.
CURRENT_TIMESTAMP
Ця функція використовується для отримання поточної позначки часу (timestamp) в системі. Наприклад:
|
1 |
SELECT CURRENT_TIMESTAMP; |
Тут ми отримуємо поточну позначку часу в системі.
DATEDIFF(частина_дати, дата_початок, дата_кінець)
Ця функція використовується, щоб визначити, скільки днів різниці між двома датами. Функція DATEDIFF() приймає три аргументи:
частина_дати — це частина дати (наприклад: рік, квартал, місяць, тиждень), яку ми хочемо порівняти між дата_початок та дата_кінець.
дата_початок та дата_кінець — дати для порівняння.
Наприклад:
|
1 2 |
SELECT DATEDIFF(month, '2020-12-31 23:59:59', '2022-01-01 00:00:00'); -- результат: 13 |
Тут ми отримуємо різницю між двома датами в місяцях.
DATEADD(частина_дати, число, дата)
Ця функція використовується для додавання числа до заданої частини дати. Наприклад:
|
1 2 |
SELECT DATEADD(month, 1, '2022-08-31'); -- результат: 2022-09-30 00:00:00 |
Тут ми додаємо 1 до місяця у даті 2022-08-31.
Примітка: Хоча ми обговорили лише декілька функцій, які використовуються в SQL Server, є багато інших функцій, що використовуються в різних СУБД. Для більш детальної інформації дивіться документації цих СУБД.
