0

我正在使用共享主机,所以我无权访问 mysql 配置文件。

该系统上的默认时区是“America/New_York”,但我的数据库需要使用 UTC -5:00。

每次我执行查询时区都设置​​为 UTC -5:00,如下所示:

SET time_zone='-5:00';

如果我想要当前时间,SELECT NOW()返回正确的时间和日期,但是在更新表时 mysql 使用 SYSTEM 时间而不是设置的时区

UPDATE administradores SET ultimo_acceso=NOW() WHERE id=1

为什么这些价值观不同?由于我覆盖了时区,两个查询中的时间不应该相同吗?

我也尝试过使用 INSERT 语句,效果很好。

4

2 回答 2

1

如果该ultimo_acceso字段的类型为TIMESTAMP,则该值实际上被存储为 UTC,然后在您选择返回的值时转换回当前时区。所以需要在select语句中再次设置时区。

如果您使用的是DATETIME数据类型,那么您设置的值应该在不进行转换的情况下保持不变,并且您将完全恢复您存储的内容 - 无论选择时的时区设置如何。

请参阅有关此主题的 MySQL 文档

于 2013-05-07T17:00:05.197 回答
0

请注意,无论变量的值如何DATETIMEDATE、 和TIME字段都将始终返回您放入其中的确切时间time_zone

TIMESTAMP字段自动将其值转换为time_zone变量指定的时区。

于 2013-05-07T17:01:02.793 回答