在给定的时间之后,我一直在尝试选择:
SELECT created FROM table WHERE created >= '2014-11-11 00:00:00';但我得到的结果包括:
2014-11-6
2014-11-3
ect..这促使我做了一些让我困惑的测试:
SELECT '2014-11-11' < '2014-11-3';
1
sqlite> SELECT DATETIME('2014-11-11') < '2014-11-3';
1
sqlite> SELECT DATETIME('2014-11-11') < '2014-11-03';
0
sqlite> SELECT DATETIME('2014-11-11') < DATETIME('2014-11-3');
;;no result看起来sqlite无法比较两个日期时间,而使用任何其他组合都会导致比较两个字符串,这不是我想要的。这让我想到了一个问题:
sqlite3是如何对待“时间戳”的,以及如何正确地存储和比较它们,从而使它们像人们所期望的那样运行?
我在sqlite3 3.8.2 2013-12-06 14:53:30中使用UbuntuLinux14.04
发布于 2015-01-10 20:39:38
在timestamp中没有SQLite类型。所以,所有的测试都是字符串比较:DATETIME('2014-11-11')返回2014-11-11 00:00:00,DATETIME('2014-11-3')返回null,因为2014-11-3不是DATETIME理解的格式。最后一个案例返回null,但不返回no result。
如果您想要SQLite正确地比较您的时间戳,那么您应该以可排序的格式存储时间戳:2014-11-03而不是2014-11-3。如果你想使用SQLite日期和时间函数,那应该是他们理解的格式。
https://stackoverflow.com/questions/27880594
复制相似问题