Генерируйте X дней с данной даты - PullRequest
0 голосов
/ 08 января 2019

Графики обычно имеют ось X, которая содержит последовательный поток. Обычно это работает, если объединение с другой таблицей содержит дату и время, но в случае, когда эта дата фактически не имеет каких-либо значений, это приводит к тому, что мой график «пропускает» эти дни.

select TO_CHAR((dateAdd(day,-row_number() over(order by true), '12/8/2018 
12:00:00 AM'))::datetime, 'MM/dd/yyyy') as Display, 0 as consumption, 0 as 
masterconsumption 
limit 7

В приведенном выше примере я пытаюсь сгенерировать метку времени за последние 7 дней. Так было бы что-то вроде 8.12.2008 | 12/7/2018 ... | 12/1 / 2018. * * 1004

Я думал, что предоставление лимита сработает, но результаты всегда возвращаются только с первой даты 12/8/2018

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Вы получаете только одно значение, потому что вы выбираете скаляр как select '12/8/2018 12:00:00 AM'. Включение его в другие функции и добавление limit 7 не увеличивает количество возвращаемых строк. Хитрость для возврата нескольких строк состоит в том, чтобы выбрать из некоторой таблицы, хотя вы фактически не указываете какие-либо столбцы из этой таблицы, просто добавьте предложение from:

select TO_CHAR((dateAdd(day,-row_number() over(order by true), '12/8/2018 
12:00:00 AM'))::datetime, 'MM/dd/yyyy') as Display, 0 as consumption, 0 as 
masterconsumption 

from some_table_that_has_at_least_7_rows

limit 7
0 голосов
/ 08 января 2019

Вот способ сделать это для тех, кто сталкивается с этим позже:

select date '12/8/2018 12:00:00 AM' - ('1 day'::interval)*i as Display, 0 
as consumption, 0 as masterconsumption
from generate_series(0, extract(doy from date '12/8/2018 12:00:00 AM')::int 
- 1) as i
limit 7
...