2017-09-25 37 views
0

我有其輸出在各記錄(從先前的選擇語句的輸出在2個日期時間之間秒的差的SQL(MySQL的)語句),這是正常工作 -CAST(SEC_TO_TIME不工作

select UNIX_TIMESTAMP('<c:out value="${row.acktime}" />') 
- UNIX_TIMESTAMP('<c:out value="${row.ts}" />') as tdiff 

輸出通常以千秒(5523,1892年等),我想顯示爲hh:mm:ss的,所以我 -

select CAST(SEC_TO_TIME(UNIX_TIMESTAMP('<c:out value="${row.acktime}" />') 
- UNIX_TIMESTAMP('<c:out value="${row.ts}" />') AS CHAR) as tdiff 

但這不產生輸出(並且不引發錯誤)我做錯了什麼?

Registers Active

回答

0

奇怪的CAST導致了問題,刪除它導致了正確的顯示。

+0

我剛剛嘗試過phpmyadmin的在線演示中的字符轉換,它工作得很好。順便說一句,轉換爲字符是不需要的,因爲時間數據類型無論如何都顯示在結果中。 – Shadow

+0

我很快就會談到,有時SEC_TO_TIME不會產生任何輸出,每次都會顯示秒數。 – Active

0

您需要使用TIME_FORMAT函數(這裏是documentation)。您的查詢將看起來像下面這樣:

SELECT TIME_FORMAT(SEC_TO_TIME(<some value>),'%Hh %im'); 

這裏的SQL Fiddle

+0

不,你不需要使用time_format(),直接轉換成char也應該可以。實際上,時間數據類型幾乎已經是一個字符串了。 – Shadow

+0

這個問題沒有提到任何示例值,所以答案必須依賴於假設。 –