我有一个包含此列定义的 sqlite (v3) 表:
"timestamp" DATETIME DEFAULT CURRENT_TIMESTAMP
此数据库所在的服务器处于 CST 时区。当我在不包括时间戳列的情况下插入到我的表中时,sqlite 会自动使用 GMT 而非 CST 中的当前时间戳填充该字段。
有没有办法修改我的插入语句以强制将存储的时间戳记在 CST 中?另一方面,最好将它存储在 GMT 中(例如,以防数据库移动到不同的时区),所以有没有一种方法可以修改我的选择 SQL 以在我时将存储的时间戳转换为 CST从表中提取它?
最佳答案
我在 sqlite 文档 ( https://www.sqlite.org/lang_datefunc.html ) 上找到了这段文字:
Compute the date and time given a unix timestamp 1092941466, and compensate for your local timezone.
SELECT datetime(1092941466, 'unixepoch', 'localtime');
这看起来不符合我的需要,所以我尝试稍微更改“datetime”函数,结果如下:
select datetime(timestamp, 'localtime')
这似乎行得通 - 这是为您的时区转换的正确方法,还是有更好的方法?
关于Sqlite:CURRENT_TIMESTAMP 是 GMT,不是机器的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/381371/