DATEDIFF - 以小时和分钟显示结果
DATEDIFF - Display result in Hours and minutes
我使用下面的方法来确定两次之间的分钟数,
DateDiff(Minute, [MondayOpenTime] , [MondayCloseTime])
对于 09:00 的开始时间和 17:30 的结束时间,它 return 的值为 510
或者如果我使用:
DateDiff(hour, [MondayOpenTime] , [MondayCloseTime])
它returns 8,
我怎样才能像 08:30
这样的 return 小时和分钟
使用分钟,然后除以 60,得到 8.5,
注意。我已经经历过很多与此类似的问题,如果有一个有确切答案我会删除这个,但我目前还找不到任何答案
您可以按您说的那样按除法计算小时数。然后您可以使用模数来计算分钟数。
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)
对于 datetime
(2) 数据类型,可以使用以下数据类型:
format([MondayCloseTime] - [MondayOpenTime], 'HH:mm')
前提是日期是同一天。 (因为这些是开放时间,所以这应该不是问题)
正如 Sean 指出的那样:对于 time
数据类型,减法不可能直接实现,需要额外的转换:
format(cast([MondayCloseTime] as datetime) - cast([MondayOpenTime] as datetime), 'HH:mm')
(旁注:格式仅适用于 sql-server 2012 及更高版本)
我使用下面的方法来确定两次之间的分钟数,
DateDiff(Minute, [MondayOpenTime] , [MondayCloseTime])
对于 09:00 的开始时间和 17:30 的结束时间,它 return 的值为 510
或者如果我使用:
DateDiff(hour, [MondayOpenTime] , [MondayCloseTime])
它returns 8,
我怎样才能像 08:30
这样的 return 小时和分钟使用分钟,然后除以 60,得到 8.5,
注意。我已经经历过很多与此类似的问题,如果有一个有确切答案我会删除这个,但我目前还找不到任何答案
您可以按您说的那样按除法计算小时数。然后您可以使用模数来计算分钟数。
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)
对于 datetime
(2) 数据类型,可以使用以下数据类型:
format([MondayCloseTime] - [MondayOpenTime], 'HH:mm')
前提是日期是同一天。 (因为这些是开放时间,所以这应该不是问题)
正如 Sean 指出的那样:对于 time
数据类型,减法不可能直接实现,需要额外的转换:
format(cast([MondayCloseTime] as datetime) - cast([MondayOpenTime] as datetime), 'HH:mm')
(旁注:格式仅适用于 sql-server 2012 及更高版本)