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

Tah*_*idi 0 sql oracle

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

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

2014-07-01 
2014-04-21 
2014-08-19 
Run Code Online (Sandbox Code Playgroud)

我想要 :

select ....

2014-04-13 
2014-02-03 
2014-06-01 
Run Code Online (Sandbox Code Playgroud)

Ale*_*ole 5

您可以使用add_months()函数减去两个月,然后使用简单的日期算术再减去18 天:

select add_months(<date_field>, -2) - 18
from <your_table>;
Run Code Online (Sandbox Code Playgroud)

您还可以使用间隔:

select <date_field> - interval '2' month - interval '18' day
from <your table>;
Run Code Online (Sandbox Code Playgroud)

SQL小提琴

但是如果最终日期或中间日期不存在,则间隔方法可能会出错;如果您使用初始日期运行它,2014-04-30那么它会尝试先从该日期开始两个月,这会给出2014-02-30- 这不是一个有效日期。演示

您也可以将它们组合起来,用add_months减去两个月,然后用一个间隔减去 18 天。