2012-07-12 14 views
6

Ich habe ein Zeitfeld in meiner Datenbank, es hat den Wert 22:05subtrahierten Minuten von einem Zeitwert

I 5 Minuten abziehen will. Wenn das Feld datetime ist, benutze ich sub_date und funktioniert gut, aber ich kann es nicht mit Zeitfeld bekommen, ich bekomme eine Warnung, mit der ich nicht umzugehen weiß;

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) 

Vielen Dank im Voraus

Antwort

9

Mysql eine SUBTIME() Funktion für diese hat.

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

Für MySQL 4.x

SEC_TO_TIME(TIME_TO_SEC(t2) - TIME_TO_SEC(t1)) 
Verwandte Themen