2014-04-08 294 views
3

我已閱讀關於將整數從秒轉換爲小時和分鐘的StackOverflow上的所有帖子。
我使用這個語句來實現下面的結果:將秒轉換爲小時和分鐘

SELECT EventDate, OriginalSeconds, 
LEFT(CONVERT(VARCHAR(5), 
DATEADD(second, OriginalSeconds, 0), 108), 5) 

我得到以下結果:

EventDate Seconds  Converted Time SHOULD BE 
01/13/2011 4860001  06:00   13:30 
01/13/2011 4860001  06:00   13:30 
01/14/2013 3960001  20:00   11:00 
02/03/2011 3960001  20:00   11:00 

唯一的問題,當然,是轉換的時間列未正確計算。 (我把正確的結果放在你應該的SHOULD BE列中:) 我在想象這是因爲秒列實際上在最後有無關數據。但是LEFT函數不是固定的嗎?

應該是列是我想實現的。我究竟做錯了什麼?我正在尋找一個沒有功能的簡單解決方案,但不知道我能做到。

+0

你沒有寫出聲明,對吧?因爲左側僅用於處理計算結果,而不是Originalseconds字段。 –

+0

Bart-no-只是一個剪輯和過去的黑客工作。 – samiboy

回答

2

正確的語句(使用你的代碼)是

SELECT EventDate, OriginalSeconds, 
LEFT(CONVERT(VARCHAR(5), 
DATEADD(second, OriginalSeconds/100, 0), 108), 5) 

這給爲13:30 4860001

你需要告訴我們原來OriginalSeconds的部分是不秒。

DATEADD(second, @secs/100, 0)變成48600011900-01-01 13:30:00.000

CONVERT(VARCHAR(5), 1900-01-01 13:30:00.000, 108)把它變成13:30

Left大概是不需要。我剛剛用9000001試了一下,結果是01:00。所以公式包裝到24小時

+0

+1,同樣如果不確定數字的位數並且需要使用LEFT,那麼雙投就應該訣竅 – Jayvee

+0

彼得 - 那很完美。我甚至沒有想到要用100分割,並且更擔心首先以某種方式編輯字符串。太好了! – samiboy

+0

@ user3370701我只是想分解它瞭解到底是怎麼回事......它不是將秒轉換成小時的最佳代碼。 –

相關問題