如何从日期减去2个月和18天

时间:2014-05-03 09:44:57

标签: sql oracle

我有一个日期列表。我想从选择中的每个日期减去2个月和18天。

select date from table -- (YYYY-MM-DD)

2014-07-01 
2014-04-21 
2014-08-19 

我想:

select ....

2014-04-13 
2014-02-03 
2014-06-01 

2 个答案:

答案 0 :(得分:4)

您可以使用the add_months() function减去两个月,然后简单date arithmetic再删除18天:

select add_months(<date_field>, -2) - 18
from <your_table>;

您还可以使用间隔:

select <date_field> - interval '2' month - interval '18' day
from <your table>;

SQL Fiddle

但如果最终或中间日期不存在,间隔方法可能会出错;如果你在初始日期为2014-04-30的情况下运行它,那么它会先尝试两个月,这会给2014-02-30 - 这不是一个有效的日期。 Demo

您也可以将它们与add_months合并,减去两个月,然后使用间隔减去18天。

答案 1 :(得分:1)

使用add_months功能和interval关键字:

select add_months(date, -2) - inteval '18' day from table

参考:Date functions