【问题标题】:Time difference with hours, minutes and seconds in SQL ServerSQL Server 中时、分、秒的时差
【发布时间】:2017-01-02 06:56:46
【问题描述】:

我需要用小时、分钟和秒找出两列之间的时间差。

这是我表中的两个日期时间列:

STOP_TIME                      Start_Time
------------------------------------------------------
2016-05-10 03:31:00.000        2016-05-10 02:25:34.000

我计算了停止时间和开始时间的秒差。 3926是第二个区别。

我需要将其转换为时间格式hh:mm:ss

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    这应该对你有用 -

    DECLARE @STOP_TIME DATETIME = '2016-05-10 03:31:00.000',
            @Start_Time DATETIME = '2016-05-10 02:25:34.000'
    SELECT 
         RIGHT('0' + CAST(DATEDIFF(S, @Start_Time, @STOP_TIME) / 3600 AS VARCHAR(2)),2) + ':'
       + RIGHT('0' + CAST(DATEDIFF(S, @Start_Time, @STOP_TIME) % 3600/60 AS VARCHAR(2)),2) + ':'
       + RIGHT('0' + CAST(DATEDIFF(S, @Start_Time, @STOP_TIME) % 60 AS VARCHAR(2)),2)
    

    【讨论】:

    • 一般情况下这工作不到 100 小时,更长的时间增加第一部分。例如,使用 RIGHT('0' + CAST(DATEDIFF(S, @Start_Time, @STOP_TIME) / 3600 AS VARCHAR(4)),4) + ':' 的时间最长超过 13 个月
    【解决方案2】:

    Sql server 支持对 Datetime 数据类型进行加减,所以你可以简单地做这样的事情:

    DECLARE @StartTime datetime = '2016-05-10 02:25:34.000',
            @EndTime datetime = '2016-05-10 03:31:00.000'
    
    SELECT CAST(@EndTime - @StartTime as Time) As TimeDifference       
    

    结果:01:05:26

    注意:正如 TT 在他的评论中正确地写的那样,只有在 @EndTime@StartTime 之间的差异小于 24 小时时,才能使用时间。 如果您需要比较相距较远的时间,则需要使用建议的其他解决方案之一。

    【讨论】:

    • 非常感谢 Zohar Peled
    • 工作时差严格小于 24 小时。
    • 是的,刚才我检查了它的工作时间仅相差不到 24 小时。
    猜你喜欢
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 2013-09-09
    相关资源
    最近更新 更多