我是將文件解析到包含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