DATEDIFF - 以小时和分钟显示结果

时间:2017-11-07 15:31:02

标签: sql-server tsql time hour minute

我使用以下来确定两次之间的分钟,

DateDiff(Minute, [MondayOpenTime] , [MondayCloseTime])

对于09:00的开始时间和17:30的关闭时间,它返回值510

或者如果我使用:

DateDiff(hour, [MondayOpenTime] , [MondayCloseTime])

它返回8,

如何让它像08:30那样返回小时和分钟

使用分钟,然后除以60,得到8.5,

注意。我已经经历了很多类似的问题,如果有一个确切的答案我会删除它,但我找不到任何答案

2 个答案:

答案 0 :(得分:2)

您可以按照规定计算小时数。然后,您可以使用模数来计算分钟数。

declare @MondayOpenTime time = '09:00'
    , @MondayCloseTime time = '17:30'

select convert(varchar(2), DateDiff(Minute, @MondayOpenTime , @MondayCloseTime) / 60) + ':' + right('0' + convert(varchar(2), DateDiff(Minute, @MondayOpenTime , @MondayCloseTime) % 60), 2)

答案 1 :(得分:2)

对于datetime(2)数据类型,可以使用以下内容:

format([MondayCloseTime] - [MondayOpenTime], 'HH:mm')

如果日期属于同一天。 (因为这些是开放时间,这应该不是问题)

正如Sean所指出的:对于time数据类型,减法不是直接可行的,需要额外的强制转换:

format(cast([MondayCloseTime] as datetime) - cast([MondayOpenTime] as datetime), 'HH:mm')

(旁注:格式仅适用于sql-server 2012及更高版本)