2016-06-10 671 views
1

我糊塗了SQLITE的時間差/日期減法

select date('2016-12-31'), date('2016-12-31','-1 month'), date('2016-12-31','-2 month'); 

結果是

2016-12-31 2016-12-01 2016-10-31 

有什麼我錯過了什麼? 我期待

2016-12-31 2016-11-31 2016-10-31 

我需要每個月最後日期。

+2

同意Rahul ...如果你想檢查它然後嘗試>>「select date('2016-12-30'),date('2016-12-30','-1 month' ),日期('2016-12-30',' - 2個月');「 –

回答

2

documentation將澄清得好:

注意, 「±NNN個月」 的工作原理是使原來的日期到 YYYY-MM-DD格式,加入±NNN的MM月份值,然後 規範化結果。因此,例如,由'+1個月'修改的數據最初產生2001-04-31,但是4月僅具有 30天,因此日期標準化爲2001-05-01。

+0

我還是不明白。所以如果日期是'2016-12-31'如何從這個日期'2016-11-31'返回1個月? – rxlky

+0

反之亦然文檔2001-03-31修改'+1月'如何讓它成爲2001-04-31而不是2001-05-01 – rxlky

+0

好吧,我明白了,謝謝 – rxlky