我有一个带有日期列的表格。我想从选择中的每个日期中减去 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)
您可以使用该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)
但是如果最终日期或中间日期不存在,则间隔方法可能会出错;如果您使用初始日期运行它,2014-04-30那么它会尝试先从该日期开始两个月,这会给出2014-02-30- 这不是一个有效日期。演示。
您也可以将它们组合起来,用add_months减去两个月,然后用一个间隔减去 18 天。