FROM_UNIXTIME 到 MySQL return 错误的日期
FROM_UNIXTIME to MySQL return wrong date
我只是使用 FROM_UNIXTIME 插入到 MySQL,但它给出了错误的日期。
我的查询是
INSERT INTO `phpc_occurrences`
SET `eid` = '15',
`time_type` = '0',
`start_ts` = FROM_UNIXTIME('1479189600'),
`end_ts` = FROM_UNIXTIME('1479232800');
1479189600 应该 return Tue, 15 Nov 2016 06:00:00 GMT
但我的本地 MySQL 数据库 returns Tue, 15 Nov 2016 13:00:00 GMT
我的 PC 时区是 UTC +7,但我已经将其更改为 UTC 0,并且 MySQL 的日期仍然 return 错误值。
谁能解释一下发生了什么事?
请确保将 time_zone 变量更新为 GMT。例如,我当前的 time_zone 是 GMT+03,所以我得到:
select FROM_UNIXTIME('1479189600');
+-----------------------------+
| FROM_UNIXTIME('1479189600') |
+-----------------------------+
| 2016-11-15 09:00:00 |
+-----------------------------+
但将 time_zone 更改为 UTC(GMT) 值会得到其他结果:
set time_zone='+00:00';
select FROM_UNIXTIME('1479189600');
+-----------------------------+
| FROM_UNIXTIME('1479189600') |
+-----------------------------+
| 2016-11-15 06:00:00 |
+-----------------------------+
也许 mysql 没有用您的系统时区更新它的内部 time_zone 变量?
您还应该注意您的字段 'start_ts' 和 'end_ts' 是否具有 TIMESTAMP 类型。如果是这样,你可以不用担心插入 table 时的时间戳,它只在你选择一些数据时才重要,因为你的 mysql 客户端实际上是从 TIMESTAMP 值(实际上只是一个 int32 ) 到您当前的本地时间,因此您需要用您想要的时区提示您的数据库客户端。
我只是使用 FROM_UNIXTIME 插入到 MySQL,但它给出了错误的日期。 我的查询是
INSERT INTO `phpc_occurrences`
SET `eid` = '15',
`time_type` = '0',
`start_ts` = FROM_UNIXTIME('1479189600'),
`end_ts` = FROM_UNIXTIME('1479232800');
1479189600 应该 return Tue, 15 Nov 2016 06:00:00 GMT
但我的本地 MySQL 数据库 returns Tue, 15 Nov 2016 13:00:00 GMT
我的 PC 时区是 UTC +7,但我已经将其更改为 UTC 0,并且 MySQL 的日期仍然 return 错误值。
谁能解释一下发生了什么事?
请确保将 time_zone 变量更新为 GMT。例如,我当前的 time_zone 是 GMT+03,所以我得到:
select FROM_UNIXTIME('1479189600');
+-----------------------------+
| FROM_UNIXTIME('1479189600') |
+-----------------------------+
| 2016-11-15 09:00:00 |
+-----------------------------+
但将 time_zone 更改为 UTC(GMT) 值会得到其他结果:
set time_zone='+00:00';
select FROM_UNIXTIME('1479189600');
+-----------------------------+
| FROM_UNIXTIME('1479189600') |
+-----------------------------+
| 2016-11-15 06:00:00 |
+-----------------------------+
也许 mysql 没有用您的系统时区更新它的内部 time_zone 变量?
您还应该注意您的字段 'start_ts' 和 'end_ts' 是否具有 TIMESTAMP 类型。如果是这样,你可以不用担心插入 table 时的时间戳,它只在你选择一些数据时才重要,因为你的 mysql 客户端实际上是从 TIMESTAMP 值(实际上只是一个 int32 ) 到您当前的本地时间,因此您需要用您想要的时区提示您的数据库客户端。