因为我发现这个问题没有意识到,所以mysql总是将时间存储在UTC的timestamp字段中,但是会在本地时区显示(例如phpmyadmin),所以我想添加自己的发现。
我有一个自动更新的last_modified字段,定义为:
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
用phpmyadmin查看它,看起来好像是本地时间,内部是UTC
SET time_zone = '+04:00'; // or '+00:00' to display dates in UTC or 'UTC' if time zones are installed.
SELECT last_modified, UNIX_TIMESTAMP(last_modified), from_unixtime(UNIX_TIMESTAMP(last_modified), '%Y-%c-%d %H:%i:%s'), CONVERT_TZ(last_modified,@@session.time_zone,'+00:00') as UTC FROM `table_name`
在任何星座中,UNIX_TIMESTAMP和“ as UTC”始终以UTC时间显示。
运行两次,首先不设置time_zone。