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

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

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

Как Вы видите с даты просто достать отдельную ее часть. Ниже приведен список основных доступных вариантов работы с функцией extract.
— day (день)
— century (столетие)
— dow (день недели)
— doy (день года)
— minute (минута)
— month (месяц)
— year (год)
Используйте комбинации этих параметров для получения необходимого результата, например:

Этот запрос возвращает день, месяц и год текущего времени в отдельных полях.
SELECT COUNT(*) FROM 'posts' WHERE EXTRACT(DAY FROM 'created_date') <= 7
А этот запрос вернет количество записей, сделанных в первую неделю месяца (т.е. ДЕНЬ создания меньше или равен 7).
Учет временных зон
В PostgreSQL очень удобно устроена работа со временем, с учетом временных зон.
Так, добавляя AT TIME ZONE '...' к запросу Вы можете получить время в конкретной часовой зоне.
Следующий пример наглядно показывает разницу между временем, возвращенным в разных временных зонах.

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