Как сгенерировать серию из 24 часов с интервалом в 1 час и отобразить последний как 23:59:59 - PullRequest
0 голосов
/ 23 сентября 2019

Проект: BIRT
Источник данных: Amazon Redshift

Я хочу создать набор данных со значением:

00:00:00
1:00:00
2:00:00
3:00:00
4:00:00
5:00:00
6:00:00
7:00:00
8:00:00
9:00:00
10:00:00
11:00:00
12:00:00
13:00:00
14:00:00
15:00:00
16:00:00
17:00:00
18:00:00
19:00:00
20:00:00
21:00:00
22:00:00
23:00:00
23:59:59 //the last value should display like this

Мне удалось создать серию24 часа с интервалом в 1 час, но мне нужно сделать последним значение 23: 59: 59

Запрос на генерацию 24 часов с интервалом в 1 час:

SELECT start_date + gs * interval '1 hour' as times
FROM (
SELECT '2019-05-21 00:00:00'::timestamp as start_date, generate_series(1,24, 1) as gs)

Как это?

Спасибо

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Обновите ваш запрос, просто добавив if за последний час:

SELECT 
    start_date + gs * interval '1 hour' 
  - if(gs=24, interval '1 second', interval '0 second') as times
FROM (
  SELECT 
    '2019-05-21 00:00:00'::timestamp as start_date
    , generate_series(1,24, 1) as gs
)
0 голосов
/ 23 сентября 2019

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

или с этим:

SELECT start_date + gs * interval '1 hour' as times
FROM (
SELECT '2020-01-01 00:00:00'::timestamp as start_date, generate_series(1,24, 1) as gs)
union
select '2020-01-01 23:59:59'::timestamp as start_date
...