MySQL时区不一致



我在共享主机上工作,所以我不能访问mysql配置文件。

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

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

SET time_zone='-5:00';

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

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

为什么这些值不同?在两个查询中不应该是相同的时间,因为我重写了时区?

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

如果你使用的是DATETIME数据类型,那么你设置的值应该被持久化而不需要转换,你将得到你所存储的值——不管选择时的时区设置是什么。

注意,DATETIMEDATETIME字段将始终返回您输入它们的确切时间,而不考虑time_zone变量的值。

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

最新更新