Sqlite:CURRENT_TIMESTAMP 是 GMT,不是机器的时区

标签 sql sqlite timezone timestamp

我有一个包含此列定义的 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/

相关文章:

sql - 使用 WHERE x IN (SELECT ...) 选择语句

mysql - SQL 仅选择列上具有最大值的行

mysql - 如果输入列表中存在所有相关值,如何仅包含结果

javascript - MomentJS:查找给定年份和时区的夏令时转换日期

javascript - 如何转换特定时区的日期并发送到服务器

MySql:在记录不存在的情况下两次连接同一个表

Android:不处理带有选择 WHERE 子句的 SQLite 查询

SQLite 选择两列(带空格)作为一列

android - 可能通过 InterationListener 从适配器调用 Intent

添加后Python DST & 时区检测