SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.12.2011 23:45:45

avreg
Участник
Зарегистрирован: 18.02.2010
Сообщений: 7

ужасы/непонятки c UNIX_TIMESTAMP

1) mysql> SELECT UNIX_TIMESTAMP('2005-03-27 02:00:00') - UNIX_TIMESTAMP('2005-03-27 03:00:00');
+-------------------------------------------------------------------------------+
| UNIX_TIMESTAMP('2005-03-27 02:00:00') - UNIX_TIMESTAMP('2005-03-27 03:00:00') |
+-------------------------------------------------------------------------------+
|                                                                             0 |
+-------------------------------------------------------------------------------+
2005-03-27 02:00:00 - 2005-03-27 03:00:00 = 0
Без комментариев.

2)
mysql> SELECT UNIX_TIMESTAMP('1970-01-01 03:00:00');
+---------------------------------------+
| UNIX_TIMESTAMP('1970-01-01 03:00:00') |
+---------------------------------------+
|                                     0 |
+---------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT UNIX_TIMESTAMP('1970-01-01 04:00:00');
+---------------------------------------+
| UNIX_TIMESTAMP('1970-01-01 04:00:00') |
+---------------------------------------+
|                                  3600 |
+---------------------------------------+
1 row in set (0.00 sec)

У меня смещение +4 часа
$ date -R   
Fri, 16 Dec 2011 23:04:51 +0400
т.е. UNIX_TIMESTAMP('1970-01-01 04:00:00') должен по идее возвратить 0

select version();
+-----------+
| version() |
+-----------+
| 5.1.58-1  |
+-----------+

Неактивен

 

#2 17.12.2011 15:33:34

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: ужасы/непонятки c UNIX_TIMESTAMP

1. 2005-03-27 время было переведено на час вперед (переход на летнее время)
2. В 1970-01-01 было зимнее время (то есть +3).

Неактивен

 

#3 17.12.2011 15:43:43

avreg
Участник
Зарегистрирован: 18.02.2010
Сообщений: 7

Re: ужасы/непонятки c UNIX_TIMESTAMP

Спсб, ясно.

Неактивен

 

#4 17.12.2011 15:51:34

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: ужасы/непонятки c UNIX_TIMESTAMP

Вы можете добиться желаемого поведения, установив time_zone:

set @@time_zone='+4:00';

Но это не будет правильное локальное время.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson