我一直在使用类似{?EndDate} - INTERVAL '1' YEAR
的语法一段时间了,而且我知道我最终会遇到一个问题,我只是打了它。我试图做DATE '2010-12-31' - INTERVAL '6' MONTH
,因为没有6月31日,它会窒息。对此进行编码的最有效和最一致的方法是什么?虽然追踪做出决定的人这样做会更令人满意,但这是不切实际的。 : - )
答案 0 :(得分:3)
我不确定是否存在 constistent 方式,因为它肯定取决于某人认为6个月的内容。然而,imho,可以安全地假设add_months
是标准方式(至少在Oracle中)减去或增加月数:
select add_months(DATE '2010-12-31',-6) from dual;
此表达式将于2010年6月30日(即该月的最后一天(截至12月31日)返回。