我使用以下来确定两次之间的分钟,
DateDiff(Minute, [MondayOpenTime] , [MondayCloseTime])
对于09:00的开始时间和17:30的关闭时间,它返回值510
或者如果我使用:
DateDiff(hour, [MondayOpenTime] , [MondayCloseTime])
它返回8,
如何让它像08:30那样返回小时和分钟
使用分钟,然后除以60,得到8.5,
注意。我已经经历了很多类似的问题,如果有一个确切的答案我会删除它,但我找不到任何答案
答案 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及更高版本)