MariaDB -DateTime/TimeZone 问题 - 未转换为正确的时区

MariaDB -DateTime/TimeZone Question - Not converting to correct Timezone

提问人:threw000 提问时间:8/21/2023 最后编辑:Shadowthrew000 更新时间:8/21/2023 访问量:93

问:

对于可能是一个愚蠢的问题,我们深表歉意(我是MariaDB的新手!

我正在与一个网络开发人员合作,该开发人员正在通过 zapier 将记录从 wordpress 重力表单发送到我的 mariadb 数据库。

Web 开发人员向我发送了 sql 查询,以在 mariadb 中创建表,以便他将记录插入其中。有问题的两个字段是“entry_date”和“date_updated”。在 sql 查询表创建中,Web 开发人员将这 2 个字段列为日期时间类型字段。

当记录开始出现时,我发现这两个字段的日期时间都是 UTC 而不是我的本地时区。我将数据类型更改为字符串以准确查看遇到的情况,并通过“2023-08-21T01:12:15+10:00”获得此数据。我想检查以确保它不是我的时区设置,并且一切都设置为“澳大利亚/墨尔本”。

我做了很多故障排除,我还将字段类型更改为时间戳而不是日期时间。这阻止了记录进入数据库,所以我做了一些谷歌并执行了以下操作

`SELECT @@GLOBAL.sql_mode global, @@SESSION.sql_mode session;
SET sql_mode = '';
SET GLOBAL sql_mode = '';

SET SESSION SQL_MODE='ALLOW_INVALID_DATES'`

通过此更改,记录开始以时间戳字段类型进入数据库,但日期/时间仍为 UTC。

我真的不确定我哪里出错了。开始认为这与日期如何进入我的 MariaDB 有关,这是可以转换为本地时区的日期/时间的正确格式吗?

'2023-08-21T01:12:15+10:00'

非常感谢您的帮助

datetime mariadb 时间戳 时区

评论

0赞 kurniadi445 8/21/2023
您想更改该时区的日期吗?
0赞 FanoFN 8/21/2023
什么是退货?SELECT NOW()
1赞 ysth 8/21/2023
re、mysql 或 mariadb datetime 字段存储时区或偏移量,只存储日期和时间。+10:00 来自您的客户。您应该始终存储 UTC 日期和时间,并在您想要的任何时区之间转换以进行输入/显示。应避免使用时间戳类型字段,因为它们会为您转换为数据库连接会话的时区或从数据库连接会话的时区转换,这可能很难处理,并且很难明确地看到数据2023-08-21T01:12:15+10:00
0赞 ysth 8/21/2023
你能扩展一下“Come Through”吗?您到底在做什么来插入/读取数据?哪些客户端/ORM/库在起作用?
1赞 ysth 8/21/2023
哦,我明白了,...+10:00 是你要插入的吗?MySQL的最新版本支持具有偏移量的日期时间文本,该偏移量立即应用于生成UTC值(因此插入实际上插入)。MariaDB,至少在 11.1.1 中不支持这一点。你想做。2023-08-21T01:12:15+10:002023-08-20 15:12:15convert_tz('2023-08-21T01:12:15','+10:00','+00:00')

答: 暂无答案