首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqlite3行为比较时间(字符串)s

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

Stack Overflow用户
提问于 2015-01-10 19:58:09
回答 1查看 42关注 0票数 0

在给定的时间之后,我一直在尝试选择:

代码语言:javascript
复制
SELECT created FROM table WHERE created >= '2014-11-11 00:00:00';

但我得到的结果包括:

代码语言:javascript
复制
2014-11-6
2014-11-3
ect..

这促使我做了一些让我困惑的测试:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-10 20:39:38

timestamp中没有SQLite类型。所以,所有的测试都是字符串比较: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日期和时间函数,那应该是他们理解的格式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27880594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档