sqlite3行为比较时间(字符串)s

时间:2015-01-10 19:58:10

标签: sqlite timestamp

我试图在给定时间后选择所有时间:

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

的Ubuntu Linux 14.04

1 个答案:

答案 0 :(得分:2)

SQLite中没有timestamp类型。因此,所有测试都是字符串比较:DATETIME('2014-11-11')返回2014-11-11 00:00:00DATETIME('2014-11-3')返回null,因为2014-11-3不是DATETIME的格式明白。您的上一个案例返回null,但不是no result 如果您希望SQLite正确地比较您的时间戳,那么您应该以可排序的格式存储它们:2014-11-03而不是2014-11-3。如果你想使用SQLite date and time functions,那应该是他们理解的格式。