0
我在yyyy-mm-dd格式的oracle中有一個日期。是否有可能得到以下幾點:
1.確切日期1年前在yyyy-mm-dd格式(so:2013-02-01 - > 2012-02-01 and 2013-02-28- - > 2012-02-29)
2.相應的開始日期和YYYY-MM-DD格式獲取指定日期的月份的第一個和最後一個日期
我在yyyy-mm-dd格式的oracle中有一個日期。是否有可能得到以下幾點:
1.確切日期1年前在yyyy-mm-dd格式(so:2013-02-01 - > 2012-02-01 and 2013-02-28- - > 2012-02-29)
2.相應的開始日期和YYYY-MM-DD格式獲取指定日期的月份的第一個和最後一個日期
同月的最後一天試試這個:
SELECT
TRUNC(DATE '2013-02-01', 'MM') - INTERVAL '1' YEAR AS one_year_ago_first_day,
LAST_DAY(TRUNC(DATE '2013-02-28', 'MM') - INTERVAL '1' YEAR) AS one_year_ago_last_day,
TRUNC(DATE '2013-02-11', 'MM'),
LAST_DAY(DATE '2013-02-11')
FROM
dual;
基本上,你可以得到通過使用TRUNC
和MM
模型格式的一個月的第一天,所以在一個月之後的所有內容都將被截斷(所以日期將被設置爲1)。
LAST_DAY
- 此函數返回給定日期的月份中最後一天的日期作爲參數。
您還可以使用INTERVAL
數據類型並從給定日期中減去它。
爲什麼從2013年2月1日2012年2月29日的「確切日期1年前」?這更像是11個月和1天前。 「你正好在1年前」的定義是什麼?什麼是閏年的2月29日之前的1年? 2月28日在前一年?去年的3月1日?一個錯誤?還有別的嗎? –
難道你不是指2013-03-01 - > 2012-02-29而不是2013-03-01 - > 2012-02-29?即使這沒有多大意義,我會認爲2013-03-01 - > 2012-03-01會有意義。唯一的問題是2012-02-29 - > 2011-02-28 ?? – Dijkgraaf
謝謝。對不起,我糾正了它。 – Victor