2014-06-24
mysql> select * from testbl3;
+-----+---------------------+---------------------+
| sid | date1               | date2               |
+-----+---------------------+---------------------+
|   1 | 2014-06-24 12:28:08 | 2014-06-24 12:28:18 |
|   2 | 2014-06-24 12:28:37 | 2014-06-24 12:29:42 |
+-----+---------------------+---------------------+
2 rows in set (0.00 sec)

위와 같은 datetime 타입의 컬럼이 포함된 테이블이 있다. 이상태에서 date1과 date2간의 뺄셈을 해보겠다.

mysql> select date1, date2, date2-date1, sec_to_time(date2-date1) from testbl3;
+---------------------+---------------------+-------------+--------------------------+
| date1               | date2               | date2-date1 | sec_to_time(date2-date1) |
+---------------------+---------------------+-------------+--------------------------+
| 2014-06-24 12:28:08 | 2014-06-24 12:28:18 |   10.000000 | 00:00:10                 |
| 2014-06-24 12:28:37 | 2014-06-24 12:29:42 |  105.000000 | 00:01:45                 |
+---------------------+---------------------+-------------+--------------------------+
2 rows in set (0.01 sec)

첫번째는 제대로 10초라는 값이 제대로 나왔는데, 두번째는 1분45초로 원래 나와야 할 1분 5초와는 너무 차이나는 값이 나온걸 알 수 있다. datetime타입이라고 해도 뺄셈을 하게 되면 숫자로 취급하여 201406242942-201406242837=105가 나온것이다. 
그래서 이럴때 제대로 된 값을 나오게 하기 위해서는

mysql> select date1, date2, unix_timestamp(date2)-unix_timestamp(date1) sec, 
sec_to_time(unix_timestamp(date2)-unix_timestamp(date1)) time from testbl3;
+---------------------+---------------------+-----+----------+
| date1               | date2               | sec | time     |
+---------------------+---------------------+-----+----------+
| 2014-06-24 12:28:08 | 2014-06-24 12:28:18 |  10 | 00:00:10 |
| 2014-06-24 12:28:37 | 2014-06-24 12:29:42 |  65 | 00:01:05 |
+---------------------+---------------------+-----+----------+
2 rows in set (0.00 sec)

위와 같이 하면 제대로 된 값이 나오는걸 알 수 있다.