2016-07-01 53 views
0

最新版本的mysql服務器5.7和我使用5.0。 在案例mysql服務器版本:5.0.95 datediff timediff不工作任何幫助的建議,歡迎。 可能是方法中的一個小錯誤。mysql服務器版本:5.0.95 datediff timediff不工作任何幫助建議

mysql> describe agent_idel_time; 
+-----------------+------------------+------+-----+---------------------+-------+ 
| Field   | Type    | Null | Key | Default    | Extra | 
+-----------------+------------------+------+-----+---------------------+-------+ 
| id    | int(10) unsigned | NO | PRI | 0     |  | 
| holdtime  | datetime   | YES |  | NULL    |  | 
| hold_max  | int(11)   | NO |  | NULL    |  | 
| hold_min  | int(11)   | NO |  | NULL    |  | 
| hold_avg  | int(11)   | NO |  | NULL    |  | 
| hold_start_time | datetime   | NO |  | 0000-00-00 00:00:00 |  | 
| hold_end_time | datetime   | NO |  | 0000-00-00 00:00:00 |  | 
| htime   | varchar(255)  | NO |  | NULL    |  | 
+-----------------+------------------+------+-----+---------------------+-------+ 
8 rows in set (0.00 sec) 

mysql> 
mysql> 
mysql> select * from agent_idel_time \G; 
*************************** 1. row *************************** 
      id: 1 
     holdtime: 0000-00-00 00:00:00 
     hold_max: 55 
     hold_min: 5 
     hold_avg: 30 
hold_start_time: 2016-06-30 15:10:00 
    hold_end_time: 2016-06-30 15:12:00 
      htime: 00:00:00 
*************************** 2. row *************************** 
      id: 2 
     holdtime: 0000-00-00 00:00:00 
     hold_max: 57 
     hold_min: 7 
     hold_avg: 32 
hold_start_time: 2016-06-30 17:10:00 
    hold_end_time: 2016-06-30 17:12:00 
      htime: 00:00:00 
2 rows in set (0.00 sec) 

ERROR: 
No query specified 

mysql> 
mysql> 
mysql> UPDATE agent_idel_time SET htime = time_format(TIMEDIFF(`hold_end_time` , `hold_start_time`) ,'%H:%m:%s'); 
Query OK, 0 rows affected (0.00 sec) 
Rows matched: 2 Changed: 0 Warnings: 0 

mysql> 
mysql> select * from agent_idel_time \G; 
*************************** 1. row *************************** 
      id: 1 
     holdtime: 0000-00-00 00:00:00 
     hold_max: 55 
     hold_min: 5 
     hold_avg: 30 
hold_start_time: 2016-06-30 15:10:00 
    hold_end_time: 2016-06-30 15:12:00 
      htime: 00:00:00 
*************************** 2. row *************************** 
      id: 2 
     holdtime: 0000-00-00 00:00:00 
     hold_max: 57 
     hold_min: 7 
     hold_avg: 32 
hold_start_time: 2016-06-30 17:10:00 
    hold_end_time: 2016-06-30 17:12:00 
      htime: 00:00:00 
2 rows in set (0.00 sec) 

ERROR: 
No query specified 
+1

Uograde它。 5.1是十三年前發佈的,三年前是5.7。 – EJP

回答

0

您得到的time_format函數的格式字符串錯誤。

分鐘,數字(00..59)%i,不%m(這是月,數字(00..12)),因此改變你的update語句:

UPDATE agent_idel_time 
SET htime = time_format(TIMEDIFF(`hold_end_time`, `hold_start_time`) ,'%H:%i:%s'); 

或者您可以使用'%T'這就是時間,24小時(hh:mm:ss)代替。

Reference爲格式代碼。

+0

mysql> UPDATE agent_idel_time SET htime = time_format(TIMEDIFF('hold_end_time','hold_start_time'),'%H:%m:%s'); Query OK,0 rows affected(0.00 sec) 行匹配:2更改:0警告:0 ---輸出----未按預期--- –

+0

mysql> select * from agent_idel_time; + ---- + --------------------- + ---------- + ---------- + ---------- + --------------------- + ----------------- ---- + ---------- + | 1 | 0000-00-00 00:00:00 | 55 | 5 | 30 | 2016-06-30 15:10:00 | 2016-06-30 15:12:00 | 00:00:00 | | 2 | 0000-00-00 00:00:00 | 57 | 7 | 32 | 2016-06-30 17:10:00 | 2016-06-30 17:12:00 | 00:00:00 | 設置2行(0.00秒) –

+0

@ HardikK.Chauhan在上面的第一條評論中,您仍然使用%m作爲分鐘,而不是%i,您是否錯過了更改或粘貼了錯誤的查詢?看看這個例子:http://www.sqlfiddle.com/#!9/346370/2 – jpw