Sql server DATEDIFF-以小时和分钟为单位显示结果
我用下面的公式来确定两次之间的分钟数Sql server DATEDIFF-以小时和分钟为单位显示结果,sql-server,tsql,time,hour,minute,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 注意。我已经讨论过许多类似的问题,如果有一个问题有确切的答案,我将删除此
DateDiff(Minute, [MondayOpenTime] , [MondayCloseTime])
对于09:00的开始时间和17:30的结束时间,它返回值510
或者如果我使用:
DateDiff(hour, [MondayOpenTime] , [MondayCloseTime])
它返回8
我如何让它像08:30那样返回小时和分钟
使用分钟,然后除以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)
你可以按你所说的除法计算小时数。然后可以使用模来计算分钟数
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')
前提是日期在同一天。(既然现在是开放时间,那就不成问题了)
正如肖恩指出的:对于time
数据类型,减法不能直接实现,需要额外的转换:
format(cast([MondayCloseTime] as datetime) - cast([MondayOpenTime] as datetime), 'HH:mm')
(旁注:格式仅在sql server 2012及更高版本上可用)对于datetime
(2)数据类型,可以使用以下数据类型:
format([MondayCloseTime] - [MondayOpenTime], 'HH:mm')
前提是日期在同一天。(既然现在是开放时间,那就不成问题了)
正如肖恩指出的:对于time
数据类型,减法不能直接实现,需要额外的转换:
format(cast([MondayCloseTime] as datetime) - cast([MondayOpenTime] as datetime), 'HH:mm')
(旁注:格式仅在sql server 2012及更高版本上可用)鉴于日期是开放时间并且应该在同一天,您可以使用
格式([MondayCloseTime]-[MondayOpenTime],'HH:mm')
@Me.Name好主意。不过,您必须将时间转换为日期时间才能执行直接数学运算。这在时间数据类型上是不允许的。@Me.Name为什么不将其作为答案发布?您可以使用“我的变量”,如果将其转换为datetime内部格式,效果会很好。@SeanLange关于time
数据类型的观点很好。不作为答案发布的主要原因是对是否在同一日期发布的警告。错过了时间
s可能正在使用。感谢您的建议,将其作为额外答案添加。鉴于日期是开放时间,应该在同一天,您可以使用格式([MondayCloseTime]-[MondayOpenTime],'HH:mm')
@Me.Name nice idea。不过,您必须将时间转换为日期时间才能执行直接数学运算。这在时间数据类型上是不允许的。@Me.Name为什么不将其作为答案发布?您可以使用“我的变量”,如果将其转换为datetime内部格式,效果会很好。@SeanLange关于time
数据类型的观点很好。不作为答案发布的主要原因是对是否在同一日期发布的警告。错过了时间
s可能正在使用。谢谢你的建议,将其作为额外的答案添加