从给定日期产生X天

时间:2019-01-08 16:12:33

标签: sql amazon-redshift

图通常具有包含连续流的X轴。通常,如果与另一个表的联合包含datetime,这将起作用,但是如果该日期实际上没有任何值,则导致我的图形“跳过”该日期点。

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天的时间戳。所以就像12/8/2018 | 12/7/2018 ... | 2018/12/1。

我认为提供限制是可行的,但结果总是在第一次约会的2018年12月8日回来

2 个答案:

答案 0 :(得分:1)

这是后来遇到它的人的方法:

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

答案 1 :(得分:1)

由于选择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