簡體   English   中英

SQL語句DateTime格式

[英]SQL statement DateTime format

我正在尋找有關我要輸出數據的格式的幫助。

以下是我使用的代碼片段。 它目前正在以秒為單位轉換數據庫中的值,並像這樣輸出

1天12:05:52

我希望它輸出信息,以便以小時為單位計算日期,因此基本上刪除如下所示的“ 1d”

36:05:52

CAST(FLOOR([Running] / 86400) AS VARCHAR(10))+'d ' + CONVERT(VARCHAR(8), DATEADD(SECOND, [Running], '19000101'), 8) AS [Running]

有人可以使用上面的代碼向我指出正確的方向嗎?

在此先感謝您的幫助。

這應該工作:

SELECT 
    CASE WHEN [Running]/3600 <= 9 THEN '0' ELSE '' END + 
    CONVERT(VARCHAR(10),[Running]/3600)+':'+
    RIGHT('00'+CONVERT(VARCHAR(2),([Running]%3600)/60),2)+':'+
    RIGHT('00'+CONVERT(VARCHAR(2),[Running]%60),2) AS [Running]

我用這個測試了它:

DECLARE @Running int
SET @Running = 60*60*24*30 + 60*3 + 3 -- should output 720:03:03
SELECT
    CASE WHEN @Running/3600 <= 9 THEN '0' ELSE '' END +
    CONVERT(VARCHAR(10),@Running/3600)+':'+
    RIGHT('00'+CONVERT(VARCHAR(2),(@Running%3600)/60),2)+':'+
    RIGHT('00'+CONVERT(VARCHAR(2),@Running%60),2) AS [Running]

輸出:

Running
----------------
720:03:03

(1 row(s) affected)

就像@Hadi在他的評論中說的那樣,您可以在VB.Net中使用TimeSpan對象(您已經用這個標記了問題,因此似乎可以建議),但是您也可以使用這段SQL,我認為這是比其他建議稍微簡單一些:

CAST(CAST(FLOOR([Running] / 3600) AS INT) AS VARCHAR) + 
RIGHT(CONVERT(VARCHAR, DATEADD(SECOND, [Running], '1900-01-01'), 108), 6) as [Running]

這是另一種方法,這里已經有很好的答案了。 :)

-- Setting param for testing purposes, replace this with actual column in the formula below
DECLARE @SECS INT
SET @SECS = 3787*26

-- Your original formula for 'D' value
SELECT CAST(FLOOR(@SECS / 86400) AS VARCHAR(10))+'d ' + CONVERT(VARCHAR(8), DATEADD(SECOND, @SECS, '19000101'), 8)

-- New one for HH:MM:SS
SELECT CAST(@SECS/3600 AS VARCHAR(20))+':'+RIGHT('0'+CAST((@SECS%3600)/60 AS VARCHAR(2)),2)+':'+RIGHT('0'+CAST(@SECS%60 AS VARCHAR(2)),2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM