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

fbcarpbf  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(405)

我正在开发一个应用程序,它使用mysql表中的created和updated列。服务器/系统时区设置为edt。
在插入时,我使用mysql current\u timestamp函数为创建的\u at值。每当更新记录时(更新当前的\u时间戳),mysql就会自动更新更新的\u at值。我的问题是,创建的\u at值输入为utc,更新的\u at值输入为edt。
有人能帮忙解决和解释这个问题吗?

nx7onnlm

nx7onnlm1#

我们无法帮助您进行修复,因为您尚未显示任何代码。mysql date、time和date time值没有时区的概念。时间戳值使用utc。由您自己编写代码来处理这些约束。如果您的数据总是被限制在一个时区,那么只需将任何时间戳值强制转换到该时区:

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

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

相关问题