Для работы с временем в PostgreSQL есть несколько типов данных и функций, которые позволяют осуществлять манипуляции с датами и временем. В этом ответе я расскажу о наиболее часто используемых возможностях.
- Типы данных для времени:
DATE
- представляет дату без времени;TIME
- представляет время без даты;TIMESTAMP
- представляет дату и время;TIMESTAMPTZ
- представляет дату и время с учетом временной зоны.
- Генерация текущей даты и времени:
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
- Функции для манипуляции с датами и временем:
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
- Операторы сравнения для дат и времени:
<
,<=
,>
,>=
,<>
- сравнение дат и времен;BETWEEN
- проверка, входит ли значение в интервал.
Пример использования:
SELECT * FROM table WHERE date_column < '2022-01-01'; SELECT * FROM table WHERE time_column BETWEEN '12:00' AND '13:00';
- Функции преобразования текста в дату и время:
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.