我是将文件解析到包含YYYY-MM-DD格式日期的sqlite数据库中。我想以这样的方式将条目存储到sqlite中,以便我可以按日期对条目进行排序(字符串不会缩减)。在sqlite中存储和排序日期的正常协议是什么?应该将日期转换为数字。有没有办法将YYYY-MM-DD日期转换为时间戳?sqlite日期排序
1
A
回答
2
SQLite在表创建时支持“DATE”。 (稍后详细说明)。
CREATE TABLE test (dt DATE PRIMARY KEY);
INSERT INTO "test" VALUES('2012-01-01');
INSERT INTO "test" VALUES('2012-01-02');
INSERT INTO "test" VALUES('2012-01-03');
SELECT dt FROM test ORDER BY dt;
2012-01-01
2012-01-02
2012-01-03
值的形式YYYY-MM-DD排序正确地作为一个字符串或一个日期。这是yyyy-mm-dd是国际标准的原因之一。
但是,SQLite不像大多数数据库工作人员所期望的那样使用数据类型。数据存储基于storage classes。例如,SQLite允许这样做。
INSERT INTO test VALUES ('Oh, bugger.');
SELECT * FROM test ORDER BY dt;
2012-01-01
2012-01-02
2012-01-03
Oh, bugger.
它也允许不同的日期“格式”(实际上,值)在一个单一的塔。它的行为与标准的SQL引擎完全不同。
INSERT INTO test VALUES ('01/02/2012');
SELECT * FROM test ORDER BY dt;
01/02/2012
2012-01-01
2012-01-02
2012-01-03
Oh, bugger.
您不必做任何特殊的事情来在日期列中存储时间戳。 (虽然我宁愿看到你声明的列时间戳,我自己)。
INSERT INTO test VALUES ('2012-01-01 11:00:00');
SELECT * FROM test ORDER BY dt;
2012-01-01
2012-01-01 11:00:00
2012-01-02
2012-01-03
Oh, bugger.
SQLite的将尝试做正确的事,只要你喂一致的数据进去。如果您使用标准格式,它会正确排序日期。
1
如果你想当前时间戳然后用
SELECT strftime('%s','now');
如果你想toYYYY-MM-DD日期时间戳然后用
SELECT strftime('%s','YYYY-MM-DD');
其中自1970-01-01
%s =秒
2
而不是以格式“YYYY-MM-DD”存储日期,存储该日期的时间戳,这将帮助您对表格进行排序。
相关问题
- 1. SQLite按日期排序
- 2. SQLite按日期排序
- 3. 在SQLITE中排序日期
- 4. 按日期对表进行排序SQlite
- 5. 按TEXT排序的Python/SQLite日期
- 6. 日期排序
- 7. 排序日期
- 8. 排序日期
- 9. 排序日期
- 10. 排序日期
- 11. Excel/SQLite日期序列号
- 12. 按照日期从sqlite升序排序列表
- 13. 日期排序ArrayList
- 14. 按日期排序
- 15. javascript日期排序
- 16. 按日期排序
- 17. 按日期排序?
- 18. NSArray日期排序
- 19. 按日期排序
- 20. 排序JSON日期
- 21. 排序日期ArrayList
- 22. ObjectListView日期排序
- 23. 按日期排序
- 24. 排序日期fetchrequest
- 25. datatables排序日期
- 26. Django按日期排序(日)
- 27. 排序日期没有返回排序日期
- 28. 升序排序日期
- 29. 排序日期降序
- 30. 排序日期日期在列表
你是什么意思的“弦不切割”? – 2012-02-23 07:07:28