我正在存盤帶有時區偏移的日期,并且我想使用 group by 查詢來按本地時間分組,而不是 UTC。以下是如何存盤日期的示例:
sqlite> CREATE TABLE t1 (datecol TEXT);
sqlite>
sqlite> INSERT INTO t1 (datecol) VALUES ('2022-01-24T22:00:00-07:00');
sqlite> INSERT INTO t1 (datecol) VALUES ('2022-01-24T23:00:00-07:00');
sqlite> INSERT INTO t1 (datecol) VALUES ('2022-01-25T00:00:00-07:00');
sqlite> INSERT INTO t1 (datecol) VALUES ('2022-01-25T01:00:00-07:00');
sqlite>
sqlite> SELECT DATE(datecol),COUNT(*) FROM t1 GROUP BY DATE(datecol);
2022-01-25|4
我想看到的是:
sqlite> SELECT DATE(datecol),COUNT(*) FROM t1 GROUP BY DATE(datecol);
2022-01-24|2
2022-01-25|2
我意識到這樣做的一種方法是手動減去時區偏移量(在這種情況下為 7 小時)。但這會有一個弱點,即它不適用于夏令時。
sqlite> SELECT DATE(datecol,'-7 hours'),COUNT(*) FROM t1 GROUP BY DATE(datecol,'-7 hours');
uj5u.com熱心網友回復:
您可以將localtime修飾符添加到date函式中:
SELECT date(datecol, 'localtime') AS localdate, count(*)
FROM t1 GROUP BY localdate;
有關詳細資訊,請參閱https://www.sqlite.org/lang_datefunc.html,包括“警告和錯誤”部分。
但通常建議在 SQLite 中始終將時間戳存盤為 UTC,因為它是默認設定,并且使事情變得更容易。
所以你可以將你當前的時間戳轉換為 UTC
UPDATE t1 SET datecol=datetime(datecol);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/422616.html
標籤:
