2016-06-10 677 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