Для работы с временем в PostgreSQL есть несколько типов данных и функций, которые позволяют осуществлять манипуляции с датами и временем. В этом ответе я расскажу о наиболее часто используемых возможностях.
1. Типы данных для времени:
- DATE
- представляет дату без времени;
- TIME
- представляет время без даты;
- TIMESTAMP
- представляет дату и время;
- TIMESTAMPTZ
- представляет дату и время с учетом временной зоны.
2. Генерация текущей даты и времени:
- CURRENT_DATE
- возвращает текущую дату;
- CURRENT_TIME
- возвращает текущее время;
- CURRENT_TIMESTAMP
- возвращает текущую дату и время.
Пример использования:
SELECT CURRENT_DATE; -- 2022-01-01 SELECT CURRENT_TIME; -- 12:34:56 SELECT CURRENT_TIMESTAMP; -- 2022-01-01 12:34:56
3. Функции для манипуляции с датами и временем:
- EXTRACT(field FROM source)
- извлекает часть даты или времени. Например, EXTRACT(YEAR FROM date_column)
вернет год из столбца с датой;
- DATE_TRUNC(field, source)
- обрезает дату или время до указанной точности. Например, DATE_TRUNC('MONTH', date_column)
обрежет дату до начала месяца;
- DATE_PART(field, source)
- возвращает часть даты или времени. Например, DATE_PART('DAY', date_column)
вернет день из столбца с датой.
Пример использования:
SELECT EXTRACT(YEAR FROM CURRENT_DATE); -- 2022 SELECT DATE_TRUNC('MONTH', CURRENT_DATE); -- 2022-01-01 SELECT DATE_PART('DAY', CURRENT_DATE); -- 1
4. Операторы сравнения для дат и времени:
- <
, <=
, >
, >=
, <>
- сравнение дат и времен;
- BETWEEN
- проверка, входит ли значение в интервал.
Пример использования:
SELECT * FROM table WHERE date_column < '2022-01-01'; SELECT * FROM table WHERE time_column BETWEEN '12:00' AND '13:00';
5. Функции преобразования текста в дату и время:
- TO_DATE(text, format)
- преобразует текст в дату. Например, TO_DATE('01/01/2022', 'MM/DD/YYYY')
вернет дату;
- TO_TIMESTAMP(text, format)
- преобразует текст в дату и время. Например, TO_TIMESTAMP('01/01/2022 12:34:56', 'MM/DD/YYYY HH24:MI:SS')
вернет дату и время.
Пример использования:
SELECT TO_DATE('01/01/2022', 'MM/DD/YYYY'); -- 2022-01-01 SELECT TO_TIMESTAMP('01/01/2022 12:34:56', 'MM/DD/YYYY HH24:MI:SS'); -- 2022-01-01 12:34:56
Это лишь некоторые возможности работы с временем в PostgreSQL. Более подробную информацию, включая другие функции и операторы, можно найти в официальной документации PostgreSQL.