Поскольку TIMESTAMP в mysql хранится в виде 32-битного значения, представляющего интервал времени с 1970-января-1 0:00:00 в секундах, я предположил, что использование оператора минус (-) для значений TIMESTAMP даст разницу этих значений в секундах На самом деле нет:
+---------------------------------------------------------------------+
| TIMESTAMP("2010-04-02 10:30:00") - TIMESTAMP("2010-04-02 10:29:59") |
+---------------------------------------------------------------------+
| 41.000000 |
+---------------------------------------------------------------------+
1 row in set (0.05 sec)
mysql> select timestampdiff(SECOND,TIMESTAMP("2010-04-02 10:30:00"),TIMESTAMP("2010-04-02 10:29:59"));
+-----------------------------------------------------------------------------------------+
| timestampdiff(SECOND,TIMESTAMP("2010-04-02 10:30:00"),TIMESTAMP("2010-04-02 10:29:59")) |
+-----------------------------------------------------------------------------------------+
| -1 |
+-----------------------------------------------------------------------------------------+
mysql> select TIMESTAMP("2010-04-02 10:30:00") - TIMESTAMP("2010-04-02 10:30:01") ;
+---------------------------------------------------------------------+
| TIMESTAMP("2010-04-02 10:30:00") - TIMESTAMP("2010-04-02 10:30:01") |
+---------------------------------------------------------------------+
| -1.000000 |
+---------------------------------------------------------------------+
+---------------------------------------------------------------------+
| TIMESTAMP("2010-04-02 10:30:00") - TIMESTAMP("2010-04-02 10:31:00") |
+---------------------------------------------------------------------+
| -100.000000 |
+---------------------------------------------------------------------+
Кажется, что разница в одну минуту равна 100 вместо 60.
Почему это?