postgreSQL 查询,用于获取当前日期后 X 天的日期



如何构造一个查询,在当前日期(sysdate(之后返回一些'x'个日期?

例如,如果今天是18-May-2018而我要求x=2,那么我应该得到

19-五月-2018

20-五月-2018

作为输出。

您可以使用generate_series.

SELECT generate_series(current_date + 1, 
current_date + 2, 
interval '1' day)

文档

在 plsql 中,您可以将x设置为变量,然后在查询中使用它。

knayak=# set x 5
knayak=# SELECT generate_series(current_date + 1,                                                                                                            
current_date + :x,                                                                                                                        
interval '1' day);
generate_series      
---------------------------
2018-05-19 00:00:00+05:30
2018-05-20 00:00:00+05:30
2018-05-21 00:00:00+05:30
2018-05-22 00:00:00+05:30
2018-05-23 00:00:00+05:30

您可以使用TO_CHAR将日期格式化为所需的格式

SELECT  to_char(dt,'DD-MON-YYYY') as dates
FROM    generate_series(current_date + 1, 
current_date + 2, 
interval '1' day) as dt
dates    
-------------
19-MAY-2018
20-MAY-2018

如果你使用的是PostgreSQL,你可以使用这个:

SELECT current_date + s.a AS dates 
FROM generate_series(1, 2, 1) AS s(a);

并将 2 更改为您的x

既然你已经写了sysdate,我相信你正在寻找一个预言机数据库,如果你正在寻找一个预言机数据库,请使用以下语句

select  trunc(sysdate)+level ldate from dual
connect by level <&x;

上面的查询会要求 x,当你给出 x 的值为 3 时,它将从 sysdate 生成两天

最新更新