SQL语句日期时间格式



我正在寻找一些关于我想要我的数据输出格式的帮助。

下面是我使用的代码片段。它当前正在以秒为单位从数据库转换值,并输出为

1 d 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中使用TimeSpan对象。Net(你已经标记了这个问题,所以似乎合理的建议),但你也可以使用这一点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)

最新更新