【问题标题】:How can i take time difference from minutes and hour?我怎样才能得到分钟和小时的时差?
【发布时间】:2018-06-28 19:11:56
【问题描述】:

我需要采用小时和分钟的差异,但也需要将其转换为这种类型 hh:mm

例如,如果我有 12:41 和 11:31 的时间,我需要输入 01:10 的输出

这就是我想要做的事情

SELECT  DATEDIFF(MINUTE,datetime,getdate()) from Table_1

但我只有几分钟。

【问题讨论】:

    标签: sql-server sql-server-2008 date


    【解决方案1】:

    示例

    Select convert(varchar(5),DateAdd(MINUTE,DateDiff(MINUTE,'2018-06-28 11:31','2018-06-28 12:41'),0),108)
    

    退货

    01:10

    用于现场测试

    Select convert(varchar(5),DateAdd(MINUTE,DateDiff(MINUTE,datetime,GetDate()),0),108)
    

    【讨论】:

    • 谢谢你,它就像一个魅力!但我注意到如果时间大于 23:59,它就不起作用。
    • @daadaa 乐于助人
    • 如果您允许使用不同日期的时间,那么您如何知道 11:31 到 12:41 之间的差异是 01:10 还是 25:10 等等?您必须有一些限制,例如“两次在同一日期”或“两次在同一 24 小时内”。通过添加 24 小时的限制,您可以简单地使用 CASE 语句,当 DATEDIFF(MINUTE, @T2, @T1) 小于 0 时,您添加时间 24 小时
    • @RonenAriely 你是对的。我确实假设 OP 在同一天工作。
    • @RonenAriely 请发布您的解决方案,我很乐意支持并建议 OP 接受您的回答。只是一个观察,OP 在 2008 年,所以 timefromparts 不可用。只是一个旁注。如果我知道 OP 跨越数天,这将是我最初的建议。
    【解决方案2】:

    您可以在几分钟内获取 datediff 并将其添加到任意日期并将其转换为 TIME。

    DECLARE @test1 TIME = '12:41'
    DECLARE @test2 TIME = '11:31'
    
    DECLARE @diff INT
    SELECT @DIFF = DATEDIFF(MINUTE, @test2, @test1)
    SELECT CAST(DATEADD(MINUTE, @diff, '1900-01-01') AS TIME)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-01
      • 2016-02-13
      • 2020-10-07
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      • 2020-06-07
      • 1970-01-01
      相关资源
      最近更新 更多