PHP strtotime返回Mysql UNIX_TIMESTAMP的不同值

时间:2010-11-08 03:30:37

标签: php mysql datetime

我在stackoverflow上搜索了帖子,发现了一些类似的帖子。但我认为这是另一个。

我的PHP& Mysql服务器的时区都设置​​为“UTC”。

在一个表中我使用了一个时间戳字段,值为“2010-11-08 02:54:15”,我用的是这样的sql:

SELECT id, 
       updated, 
       second( updated ) , 
       unix_timestamp( updated ) 
  FROM `transaction` 
 where id = 56

得到了这个:

id  updated              second  unix
--------------------------------------------
56  2010-11-08 02:54:15  15      1289184879 

然后我在php中使用它:

echo strtotime("2010-11-08 02:54:15");

得到了这个:

1289184855

不同的是24秒。

我在http://www.unixtimestamp.com/index.php上查看这些时间戳 php结果是正确的。那么mysql unix_timestamp函数有bug吗? Mysql版本是:5.1.41

2 个答案:

答案 0 :(得分:4)

这被证实是5.1.44中修复的错误。

有关详细信息,请参阅http://bugs.mysql.com/bug.php?id=51918,错误海报确切地发现了此问题。

你别无选择,只能升级以避免外观。

答案 1 :(得分:0)

我无法在Linux上的MySQL 5.1.41中重现这一点。也许这只是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)