Mysql 日期和国际日期
假设我在多个位置有多台服务器,我希望使用MySQL的datetime类型作为字段日期,并且我始终希望字段日期具有UTC时间戳,以便在将其添加到数据库时执行Mysql 日期和国际日期,mysql,utc,unix-timestamp,Mysql,Utc,Unix Timestamp,假设我在多个位置有多台服务器,我希望使用MySQL的datetime类型作为字段日期,并且我始终希望字段日期具有UTC时间戳,以便在将其添加到数据库时执行UTC\u timestamp()。现在我想让MySQL为它输出UNIX时间戳 当我在服务器A上执行此操作时,我得到字符串“2009-06-17 12:00:00”,在其上执行UNIX_时间戳(字符串)会返回数字1245240000。这是UTC时间2009-06-17 12:00:00。现在我在服务器B上做同样的事情。 我得到了相同的字符串,因
UTC\u timestamp()
。现在我想让MySQL为它输出UNIX时间戳
当我在服务器A上执行此操作时,我得到字符串“2009-06-17 12:00:00”,在其上执行UNIX_时间戳(字符串)会返回数字1245240000。这是UTC时间2009-06-17 12:00:00。现在我在服务器B上做同样的事情。
我得到了相同的字符串,因为它是UTC字符串,但当再次执行UNIX_时间戳(字符串)时,我得到了错误的返回号1245232800,即UTC+2时间。我该怎么做?我应该在PHP端执行从字符串到时间戳的转换吗?G'day
我要问一个明显的问题,你检查过两台机器上的日期和时间了吗
编辑:。。。两台机器上的MySQL时区是一样的吗
更新:正常。问题在于,传递到UNIX_timestamp中的时间戳字符串被解释为当前时区中的一个值,然后转换回UTC,因此,由于您在MEZ中,将减去两个小时以将其返回UTC,因此,当时间戳转换回UNIX时,将从时间戳中减去7200
因此,您在使用UNIX_TIMESTAMP()转换时看到的变化是返回到UNIX历元时间字符串
顺便说一句,您不应该使用时间戳类型来存储UTC_时间戳而不是DATETIME类型吗
更新:将演示时间与存储时间分离无疑是一条可行之路。然后,您可以在世界各地重复使用相同的数据,并且只需在向用户呈现数据时与本地时间进行转换
如果你不这样做,那么你将不得不在制作时间戳时存储时区,然后进行各种复杂的排列,以确定是否
- 本地时区在存储时是夏令时
- 存储数据时的时区与显示数据时的时区之间的差异是什么
干杯,你试过这么做吗 一起执行这些指令
SET time_zone = 'UTC';
SELECT FROM_UNIXTIME(0), UNIX_TIMESTAMP('2009-06-17 12:00:00');
// 1970-01-01 00:00:00 1245240000
它们只影响客户端会话,而不影响服务器配置。一台设置为utc时间,另一台设置为utc+2,因为一台在伦敦,另一台在德国。。我一直希望将区域设置时区设置为时区,因为其他人建议@Thomas,一定要坚持将内部时间表示形式设置为UTC!将存储的值与prenetation值分离是唯一的方法,那么为什么他们要将其保留在localzone呢?