使用 DATETIME 函数进行一些算术运算时,我发现了以下行为:
选择日期时间('现在','-1个月','月初')
预计:2011-02-01 00:00:0
结果:2011-03-01 00:00:0 - 失败
选择日期时间('现在','-2个月','月初')
预计:2011-01-01 00:00:0
结果:2011-01-01 00:00:0 - 好的
这似乎只是从昨天开始发生,我的集成测试发现了这一点。我的猜测是减去的月份以天为单位计算,并且以某种方式使用了最后一个月的天数(而不是当前天数)。上个完整月,2 月有 28 天,因此结果)
这可以通过更改 DATETIME 函数的输入顺序轻松解决,如下所示:DATETIME('now', 'start of month', '-1 month'),但它仍然是棘手的行为并且可能导致错误不被注意。
我正在使用 System.Data.SQLite.DLL/版本 1.0.66.0/2010 年 4 月 18 日
有没有其他人发现这种行为?这是一个已知的错误?还是我“做错了”?
最佳答案
now
减去一个月 = 2 月 30 日 = 3 月 2 日。然后 start of month
为您提供三月的开始。这可能不是任何人想要的行为,但这是文档所描述的:转到 http://www.sqlite.org/lang_datefunc.html 并搜索“通过渲染工作”。
关于sqlite - SQLite DATETIME 函数中的 '-1 month' 是 'broken' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5485813/