PostgreSQL. Советы по работе с датой

Главная  >>  Базы данных  >>  PostgreSQL  >>  PostgreSQL. Советы по работе с датой

Работа с датой, независимо от базы данных, на которой Вы работаете, рано или поздно, встретиться на Вашем пути. Много работая на PostgreSQL — решил написать небольшую заметку о специфике работы с датой — о том, с чем пришлось столкнуться на практике. Итак, давайте разбираться, как работать с датой на PostgreSQL.

Текущее время

Наиболее простой способ получить текущее время в PostgreSQL — использовать NOW().
PostgreSQL. Советы по работе с датой

Прибавление интервала к дате

Получить интервал также не составит проблем. Используйте синтаксис, на подобие этого:
— interval ‘1 day’
— interval ‘5 days’
— interval ‘5 days’ + interval ‘3 hours’
— interval ‘5 days 3 hours’

PostgreSQL. Советы по работе с датой

Выделение часа, дня, месяца и т.д.

Для того, чтобы работать отдельно с элементом даты (отдельно минуты, часы, дни и т.д.) следует использовать EXTRACT.

PostgreSQL. Советы по работе с датой

Как Вы видите с даты просто достать отдельную ее часть. Ниже приведен список основных доступных вариантов работы с функцией extract.

— day (день)
— century (столетие)
— dow (день недели)
— doy (день года)
— minute (минута)
— month (месяц)
— year (год)

Используйте комбинации этих параметров для получения необходимого результата, например:

Этот запрос возвращает день, месяц и год текущего времени в отдельных полях.

А этот запрос вернет количество записей, сделанных в первую неделю месяца (т.е. ДЕНЬ создания меньше или равен 7).

Учет временных зон

В PostgreSQL очень удобно устроена работа со временем, с учетом временных зон.
Так, добавляя AT TIME ZONE ‘…’ к запросу Вы можете получить время в конкретной часовой зоне.
Следующий пример наглядно показывает разницу между временем, возвращенным в разных временных зонах.

Как видите работа со временем в PostgreSQL достаточно удобна. Да, здесь есть много подводных камней, но для большинства случаев приведенных примеров и вариантов получения результата более чем достаточно.