SQL Query获取当前日期之后X天的日期

时间:2018-05-18 03:34:46

标签: sql postgresql date

如何构建一个在当前日期(val)之后返回一些'x'个日期的查询?

例如,如果今天是sysdate并且我要求18-May-2018,那么我应该

19月-2018

可能20 - 2018

作为输出。

3 个答案:

答案 0 :(得分:1)

您可以使用generate_series

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

Docs

在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

答案 1 :(得分:1)

如果你正在使用PostgreSQL,你可以使用它:

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

并将2更改为x

的值

答案 2 :(得分:1)

因为你已经写了sysdate,我相信你正在寻找一个 oracle 数据库,如果你正在寻找一个oracle数据库,请使用以下语句

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

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