2012-07-12 48 views
6

Tôi có trường thời gian trong cơ sở dữ liệu của mình, nó có giá trị 22:05trừ phút từ giá trị thời gian

Tôi muốn trừ 5 phút. Khi lĩnh vực này là datetime tôi sử dụng sub_date và hoạt động tốt, nhưng tôi không thể có được nó với lĩnh vực thời gian, tôi nhận được một cảnh báo tôi không biết làm thế nào để đối phó với;

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) 

Cảm ơn bạn trước

Trả lời

9

Mysql có một chức năng SUBTIME() cho việc này.

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

Đối với những người sử dụng mysql 4.x

SEC_TO_TIME(TIME_TO_SEC(t2) - TIME_TO_SEC(t1)) 
Các vấn đề liên quan