1

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

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

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

或者如果我使用:

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

它返回 8,

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

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

笔记。我已经解决了许多与此类似的问题,如果有一个有确切答案的问题,我将删除此问题,但我目前还找不到任何答案

4

2 回答 2

3

如您所述,您可以按除法计算小时数。然后,您可以使用模数来计算分钟数。

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)
于 2017-11-07T15:35:53.990 回答
3

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

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

前提是日期在同一天。(因为这些是开放时间,这应该不是问题)

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

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

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

于 2017-11-07T15:59:10.217 回答