我有一个日期列表。我想从选择中的每个日期减去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
答案 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>;
但如果最终或中间日期不存在,间隔方法可能会出错;如果你在初始日期为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