SQL Server 2008-时间差(0)
我有一张有SQL Server 2008-时间差(0),sql,time,subtraction,Sql,Time,Subtraction,我有一张有工作时间时间(0),午餐时间时间(0) 我要做的是: 如果午餐时间大于一小时,我必须计算偏移量 例如: lounch_hour = 01:30:00 => offset = 00:30:00 offset = 00:30:00, working_hours = 07:30:00 => working_hours = 07:00:00 完成后,我必须从工作时间值中减去偏移量 例如: lounch_hour = 01:30:00 => offset = 00:30:0
工作时间
时间(0)
,午餐时间
时间(0)
我要做的是:
如果午餐时间大于一小时,我必须计算偏移量
例如:
lounch_hour = 01:30:00 => offset = 00:30:00
offset = 00:30:00, working_hours = 07:30:00 => working_hours = 07:00:00
完成后,我必须从工作时间值中减去偏移量
例如:
lounch_hour = 01:30:00 => offset = 00:30:00
offset = 00:30:00, working_hours = 07:30:00 => working_hours = 07:00:00
结果必须是时间(0)
格式(hh:mm:ss
)
我尝试了几种解决方案,但仍然不起作用。使用的DATEDIFF
可能没有以正确的方式使用
感谢您提供的帮助您正在使用时间来存储持续时间,它们实际上并不具有可比性,并且可能会出现不稳定的情况,这方面的主要示例是,当使用时间格式的持续时间超过24小时时,最好以十进制秒(或分钟或小时)存储持续时间,然后,您可以在sql中或在应用程序层中使用各种方法将其转换为HH:mm:ss
格式
但是,对于您的具体场景,您可以使用:
DECLARE @WorkingHours TIME(0) = '07:00',
@LunchHours TIME(0) = '01:30';
SELECT Total = DATEADD(MINUTE, DATEDIFF(MINUTE, @LunchHours, '01:00'), @WorkingHours);
基本上计算允许的午餐时间和实际午餐时间之间的差异(以分钟为单位),然后将这些分钟添加到工作时间中