Генерация последовательности дат в PostgreSQL с помощью generate_series

Иногда нужно сгенерировать последовательность дат от одной даты до другой. В PostgreSQL есть функция, которая позволяет это сделать в одну строку. Это generate_series. У неё три аргумента. Первый — начальная дата (timestamp или timestamp with time zone), второй — конечная дата(timestamp или timestamp with time zone) и третий — шаг (interval).

Например, сгенерируем последовательность часов для одного дня:

Результат:

«2015-06-04 00:00:00»
«2015-06-04 01:00:00»
«2015-06-04 02:00:00»
«2015-06-04 03:00:00»
«2015-06-04 04:00:00»
«2015-06-04 05:00:00»
«2015-06-04 06:00:00»
«2015-06-04 07:00:00»
«2015-06-04 08:00:00»
«2015-06-04 09:00:00»
«2015-06-04 10:00:00»
«2015-06-04 11:00:00»
«2015-06-04 12:00:00»
«2015-06-04 13:00:00»
«2015-06-04 14:00:00»
«2015-06-04 15:00:00»
«2015-06-04 16:00:00»
«2015-06-04 17:00:00»
«2015-06-04 18:00:00»
«2015-06-04 19:00:00»
«2015-06-04 20:00:00»
«2015-06-04 21:00:00»
«2015-06-04 22:00:00»
«2015-06-04 23:00:00»

Можно сгенерировать последовательность дней в месяце:

Результат:

«2015-06-01 00:00:00»
«2015-06-02 00:00:00»
«2015-06-03 00:00:00»
«2015-06-04 00:00:00»
«2015-06-05 00:00:00»
«2015-06-06 00:00:00»
«2015-06-07 00:00:00»
«2015-06-08 00:00:00»
«2015-06-09 00:00:00»
«2015-06-10 00:00:00»
«2015-06-11 00:00:00»
«2015-06-12 00:00:00»
«2015-06-13 00:00:00»
«2015-06-14 00:00:00»
«2015-06-15 00:00:00»
«2015-06-16 00:00:00»
«2015-06-17 00:00:00»
«2015-06-18 00:00:00»
«2015-06-19 00:00:00»
«2015-06-20 00:00:00»
«2015-06-21 00:00:00»
«2015-06-22 00:00:00»
«2015-06-23 00:00:00»
«2015-06-24 00:00:00»
«2015-06-25 00:00:00»
«2015-06-26 00:00:00»
«2015-06-27 00:00:00»
«2015-06-28 00:00:00»
«2015-06-29 00:00:00»
«2015-06-30 00:00:00»

Полное описание функции:

http://www.postgresql.org/docs/9.4/interactive/functions-srf.html

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *