[英]PHP strtotime return different value of Mysql UNIX_TIMESTAMP
I've searched post on stackoverflow,found some similar post.But I think this is a different one. 我在stackoverflow上搜索过帖子,发现了一些类似的帖子。但我认为这是一个不同的帖子。
My PHP & Mysql server's timezone all set to "UTC". 我的PHP和Mysql服务器的时区都设置为“UTC”。
In a table I use a timestamp field,value is "2010-11-08 02:54:15",I use sql like this: 在一个表中我使用了一个时间戳字段,值为“2010-11-08 02:54:15”,我使用这样的sql:
SELECT id,
updated,
second( updated ) ,
unix_timestamp( updated )
FROM `transaction`
where id = 56
Got this: 明白啦:
id updated second unix
--------------------------------------------
56 2010-11-08 02:54:15 15 1289184879
Then I use this in php: 然后我在php中使用它:
echo strtotime("2010-11-08 02:54:15");
Got this: 明白啦:
1289184855
The different is 24 seconds. 不同的是24秒。
And I check these timestamps on http://www.unixtimestamp.com/index.php The php result is the correct one. 我在http://www.unixtimestamp.com/index.php上查看这些时间戳.php结果是正确的。 So the mysql unix_timestamp function has bug? 那么mysql unix_timestamp函数有bug吗? Mysql version is: 5.1.41 Mysql版本是:5.1.41
This is confirmed to be a bug that is fixed in 5.1.44. 这被证实是5.1.44中修复的错误。
See http://bugs.mysql.com/bug.php?id=51918 for details, the bug poster has found this issue exactly. 有关详细信息,请参阅http://bugs.mysql.com/bug.php?id=51918 ,错误海报确切地发现了此问题。
You will have no choice but to upgrade to avoid it by the looks of it. 你将别无选择,只能升级以避免它的外观。
I can't reproduce that in MySQL 5.1.41 on Linux. 我无法在Linux上的MySQL 5.1.41中重现这一点。 Perhaps this is Windows-only? 也许这只是Windows?
snip@ssnip:~$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 295
Server version: 5.1.41
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select unix_timestamp("2010-11-08 02:54:15");
+---------------------------------------+
| unix_timestamp("2010-11-08 02:54:15") |
+---------------------------------------+
| 1289206455 |
+---------------------------------------+
1 row in set (0.00 sec)
mysql> exit
Bye
maia@sloodle:~$ php -a
Interactive shell
php > echo strtotime("2010-11-08 02:54:15");
1289206455
php > exit
snip@ssnip:~$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 297
Server version: 5.1.41
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select from_unixtime(1289206455);
+---------------------------+
| from_unixtime(1289206455) |
+---------------------------+
| 2010-11-08 02:54:15 |
+---------------------------+
1 row in set (0.00 sec)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.