PHP strtotime возвращает другое значение Mysql UNIX_TIMESTAMP - PullRequest
4 голосов
/ 08 ноября 2010

Я искал пост на 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 имеет ошибку? Mysql версия: 5.1.41

Ответы [ 2 ]

4 голосов
/ 08 ноября 2010

Подтверждено, что это ошибка, исправленная в 5.1.44.

Подробнее см. http://bugs.mysql.com/bug.php?id=51918, постер с ошибками точно обнаружил эту проблему.

ВыУ него не будет иного выбора, кроме как обновиться, чтобы избежать его, судя по всему.

0 голосов
/ 18 ноября 2010

Я не могу воспроизвести это в MySQL 5.1.41 в Linux.Возможно, это только для 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)  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...