mysql - MySQL 日期/时间函数和时区问题
问题描述
我正在开发一个在 MySQL 表中使用 created_at 和 updated_at 列的应用程序。服务器/系统时区设置为 EDT。
在插入时,我使用 MySQL CURRENT_TIMESTAMP 函数作为 created_at 值。每当更新记录时,MySQL 都会自动更新 updated_at 值(ON UPDATE CURRENT_TIMESTAMP)。我的问题是 created_at 值输入为 UTC 而 updated_at 值输入为 EDT。
有人可以帮忙解决和解释这个问题吗?
解决方案
我们无法帮助您进行修复,因为您没有显示任何代码。Mysql 日期、时间和日期时间值没有时区的概念。时间戳值使用 UTC。您可以编写代码来处理这些约束。如果您的数据将始终被限制在一个时区,那么只需将任何时间戳值转换为该时区:
SELECT CONVERT_TZ(created_at, 'GMT', 'EDT'), updated_at
FROM your_table
当您开始使用多个时区时,这会变得非常混乱 - 更好的解决方案是始终以 UTC 存储时间并更改前端的表示(但如果您在脑损伤的操作系统上运行,这可能会有点痛苦或者不控制服务器配置)
推荐阅读
- c++ - 自定义类上的 C++ std::find_if
- python-3.x - os.system 的多行命令
- flash - 修改 Animate CC 应用程序并重新分发它的方法是什么
- reactjs - Material-ui Next Theme 不适用
- java - Java如何停止线程并发运行
- css - 如何配置 Create React App 以使用 CSS 块?
- c++ - 如何抛出“模板参数”类型的异常?
- chef-infra - 如何使用厨师食谱在文件中间插入节
- bash - 尝试从 xentop grep 和 awk CPU % 时输出不同
- vba - VBA - 将幻灯片母版中的项目符号样式应用于选定的文本框