2009-02-05 4 views
4

Я пытаюсь найти способ, чтобы оператор SELECT возвращал набор дат между двумя датами ввода с заданным интервалом. Я хотел бы иметь возможность легко изменять временные рамки и интервал, которые будут возвращены, поэтому жесткое кодирование чего-то с помощью серии SELECT ... UNIONs не было бы идеальным.SQL, генерирующий набор дат

Например: Я хочу, чтобы все даты с интервалом в 5 секунд за последние 60 секунд.

Ожидаемое:

  times 
--------------------- 
2009-02-05 08:00:00 
2009-02-05 08:00:05 
2009-02-05 08:00:10 
2009-02-05 08:00:15 
2009-02-05 08:00:20 
... 
2009-02-05 08:00:55 

Edit: generate_series (...) можно использовать вместо таблицы в SELECT, и моделирует таблицу с серией цифр в нем с заданным начальным значением, конечное значение и, необязательно, шаг. Оттуда он может быть CAST для типа, который мне нужен для временных функций и управляется во время SELECT.

Спасибо Quassnoi.

ответ

4
SELECT CAST (s || ' seconds' AS INTERVAL) + TIMESTAMP 'now' 
FROM generate_series(0, -60, -5) s 
+0

Эта арифметика TIMESTAMP действительно сложна для PostgreSQL :) – Quassnoi

Смежные вопросы