MySQL日期/时间函数和时区问题

时间:2018-08-25 21:04:00

标签: mysql datetime timezone

我正在使用在MySQL表中使用created_at和Updated_at列的应用程序。服务器/系统时区设置为EDT。

在INSERT上,我将MySQL CURRENT_TIMESTAMP函数用于created_at值。每当他的记录被更新时,MySQL自动更新updated_at值(ON UPDATE CURRENT_TIMESTAMP)。我的问题是,created_at值输入为UTC,updated_at值输入为EDT。

有人可以帮助解决此问题并进行解释吗?

1 个答案:

答案 0 :(得分:0)

我们无法帮助您解决问题,因为您没有显示任何代码。 Mysql日期,时间和日期时间值没有时区的概念。时间戳记值使用UTC。您可以自行编写代码来处理这些约束。如果您的数据始终被限制在一个时区,那么只需将任何时间戳值转换为该时区即可:

 SELECT CONVERT_TZ(created_at, 'GMT', 'EDT'), updated_at
 FROM your_table

当您开始使用多个时区时,这将变得非常混乱-更好的解决方案是始终将时间存储在UTC中并更改前端的表示形式(但这可能有点如果您在大脑受损的操作系统上运行或不控制服务器配置,将会很痛苦。