【发布时间】:2019-09-16 21:40:49
【问题描述】:
我有一个包含日期时间列的表:
$db = new SQLite3('test.db');
$results = $db->query('CREATE TABLE test (id INTEGER PRIMARY KEY AUTOINCREMENT,
date DATE, foo TEXT);');
然后我添加一行(以 UTC 存储添加行的日期时间)
$results = $db->query('INSERT INTO test (date, foo) VALUES(CURRENT_TIMESTAMP, "bar");');
这行得通。现在显示行时:
$results = $db->query('SELECT * FROM test ORDER BY date desc');
while ($row = $results->fetchArray()) {
echo $row['date'];
}
日期显示如下,UTC 格式:2019-04-27 16:41:33。
如何改为在当地时区显示?(包括夏令时)
我可以想象有不同的选择:
使用本地时区直接存储在 SQLite 中(但我认为这不是好的做法)
以 UTC 存储在 SQLite 中,并在
SELECT期间进行 UTC->本地时区转换。怎么样?以 UTC 存储在 SQLite 中,并通过 PHP 进行 UTC->本地时区转换。
如何正确执行此操作?
【问题讨论】:
-
所有选项似乎都是合法的。您可以在此处查看如何执行第二个选项:stackoverflow.com/questions/15017799/…。我想选项之间没有太大区别,更多的是关于什么对你来说更方便。
-
仔细阅读sqlite.org/lang_datefunc.html,您将了解如何执行第二个选项。
标签: php sql sqlite datetime timezone