我正在开发一个应用程序,它使用mysql表中的created和updated列。服务器/系统时区设置为edt。在插入时,我使用mysql current\u timestamp函数为创建的\u at值。每当更新记录时(更新当前的\u时间戳),mysql就会自动更新更新的\u at值。我的问题是,创建的\u at值输入为utc,更新的\u at值输入为edt。有人能帮忙解决和解释这个问题吗?
wa7juj8i1#
我们无法帮助您进行修复,因为您尚未显示任何代码。mysql date、time和date time值没有时区的概念。时间戳值使用utc。由您自己编写代码来处理这些约束。如果您的数据总是被限制在一个时区,那么只需将任何时间戳值强制转换到该时区:
SELECT CONVERT_TZ(created_at, 'GMT', 'EDT'), updated_at FROM your_table
当您开始使用多个时区时,这会变得非常混乱—一个更好的解决方案是始终以utc格式存储时间,并更改前端的表示形式(但如果您在大脑受损的操作系统上运行或不控制服务器配置,这可能会有点麻烦)
1条答案
按热度按时间wa7juj8i1#
我们无法帮助您进行修复,因为您尚未显示任何代码。mysql date、time和date time值没有时区的概念。时间戳值使用utc。由您自己编写代码来处理这些约束。如果您的数据总是被限制在一个时区,那么只需将任何时间戳值强制转换到该时区:
当您开始使用多个时区时,这会变得非常混乱—一个更好的解决方案是始终以utc格式存储时间,并更改前端的表示形式(但如果您在大脑受损的操作系统上运行或不控制服务器配置,这可能会有点麻烦)