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

sqlite3 behavior comparing time(string)s

我正在尝试在给定时间后一直select:

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 如何对待 'timestamps' 以及如何正确地存储和比较它们以便它们表现得像人们期望的那样?

我正在使用 Ubuntu Linux 14.04 和 sqlite3 3.8.2 2013-12-06 14:53:30

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