2011-01-20 99 views
1

我一直在使用諸如{?EndDate} - INTERVAL '1' YEAR這樣的語法一段時間了,而且我知道最終有一個問題要打到,我只是打了它。我試圖做DATE '2010-12-31' - INTERVAL '6' MONTH,它因爲沒有6月31日而窒息。什麼是最有效和一致的方式來編碼?在追查決定以這種方式做決定的人時會更滿意,這是不切實際的。 :-)Oracle PL/SQL日期時間數學間隔

+0

他們從未聽說過2月份嗎? – 2011-01-30 14:05:55

+0

與大多數此類性質的決定一樣,它是由委員會制定的,它是ANSI SQL的一部分(92或99,我不確定) – 2011-01-30 22:22:40

回答

3

我不確定是否有固定的方式,因爲它肯定取決於某人認爲是6個月。但是,恕我直言,這是安全的假設,add_months是一種標準的方式(至少在甲骨文)加上或減去月:

select add_months(DATE '2010-12-31',-6) from dual; 

該表達式返回2010年6月30日(也就是最後一天在本月(如同12月31日)