具有不同时区的 MySQL 日期时间

标签 mysql timezone

我在 mysql 数据库中有一个 DateTime 对象包含例如这个 datetime "2017-08-14 18:06:40"server/mysql 默认时区是美国,所以当我插入 datetime 时,它进入美国时区。

我的问题是当一个来自欧洲的用户选择那个日期时间时,它会有所不同,因为时间差异不是这样吗?

我该如何解决这个问题。我希望欧洲的用户获得相对于他们时区的日期时间

我通过搜索找到了这个

CONVERT_TZ(`comment_date`,@@global.time_zone,@@session.time_zone) AS comment_date,

然后我发现你需要设置@@session.time_zone its not detected automatically

那么我们如何解决这个问题?网站或应用使用哪些选项和技术来统一各国的datetime

最佳答案

如果您希望数据类型代表一个即时时刻,而不考虑保存时区,您应该将数据类型更改为 timestamp 而不是 datetimeTimestamp 始终保存为 UTC,而 datetime 表示本地日期和时间,不包含任何时区信息。

有关更多信息,请参阅此问题:Should I use field 'datetime' or 'timestamp'?

另见 Mysql reference manual regarding datetime

关于具有不同时区的 MySQL 日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45689225/

相关文章:

php - PDO 将错误的日语字符插入数据库

php - mysqli prepared statement查询错误在哪里?

mysql - DBD-mysql错误: CPU you selected does not support x86-64 instruction set

mysql - 将多个数据值插入mysql表中的字段

ruby - 未初始化的常量 ActionView::CompiledTemplates::Timezone

mysql - 如何在联合表中编写单列的where条件?

javascript - Date.toISOString() 但本地时间而不是 UTC

python-2.7 - 将 Pandas DF 列从 UTC 转换为不带日期的美国东部时间

postgresql 采取时区更改,直到重新启动服务

postgresql - 在考虑时区的同时获取 PostgreSQL 中日期的记录数