2012-07-12 93 views
6

我在我的數據庫中有一個時間字段,它的值是22:05從時間值減去分鐘

我想要減去5分鐘。當字段是日期時間我使用sub_date和工作正常,但我不能與時間領域,我得到一個警告,我不知道如何處理;

mysql> SELECT scheduleFinalTime FROM clientSchedule WHERE clientScheduleID = 3; 
+-------------------+ 
| scheduleFinalTime | 
+-------------------+ 
| 22:05:00   | 
+-------------------+ 
1 row in set (0.00 sec) 

mysql> SELECT date_sub(scheduleFinalTime, INTERVAL 5 MINUTE) FROM clientSchedule WHERE clientScheduleID = 3; 
+------------------------------------------------+ 
| date_sub(scheduleFinalTime, INTERVAL 5 MINUTE) | 
+------------------------------------------------+ 
| NULL           | 
+------------------------------------------------+ 
1 row in set, 1 warning (0.00 sec) 

mysql> show warnings; 
+---------+------+------------------------------------------------------------+ 
| Level | Code | Message             | 
+---------+------+------------------------------------------------------------+ 
| Warning | 1264 | Out of range value for column 'scheduleFinalTime' at row 1 | 
+---------+------+------------------------------------------------------------+ 
1 row in set (0.00 sec) 

預先感謝您

回答

9

Mysql已經爲這個SUBTIME()功能。

SUBTIME(expr1,expr2) 

SUBTIME() returns expr1 − expr2 expressed as a value in the same format as expr1. expr1 is a time or datetime expression, and expr2 is a time expression. 

mysql> SELECT SUBTIME('2007-12-31 23:59:59.999999','1 1:1:1.000002'); 
     -> '2007-12-30 22:58:58.999997' 
mysql> SELECT SUBTIME('01:00:00.999999', '02:00:00.999998'); 
     -> '-00:59:59.999999' 
2

對於那些使用的MySQL 4.x的

SEC_TO_TIME(TIME_TO_SEC(t2) - TIME_TO_SEC(t1))