2012-07-12 17 views
6

Mam pole czasu w mojej bazie danych, ma wartość 22:05Odejmij minuty od wartości czasu

Chcę odjąć 5 minut. Kiedy pole jest datetime używam sub_date i działa dobrze, ale nie mogę go uzyskać z polem czasu, otrzymuję ostrzeżenie, z którym nie wiem jak sobie poradzić;

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) 

góry dziękuję

Odpowiedz

9

Mysql ma SUBTIME() funkcję dla tego produktu.

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

Dla tych MySQL 4.x

SEC_TO_TIME(TIME_TO_SEC(t2) - TIME_TO_SEC(t1)) 
Powiązane problemy