sqlserver计算’2024-09-23 13:00:00‘加上8小时工作时间不考虑下班时间后的结果
时间: 2024-09-23 15:08:49 浏览: 31
在SQL Server中,如果你想要计算'2024-09-23 13:00:00'这个时间加上8小时的标准工作时间(例如,通常的上午9点到下午5点),你需要先定义工作日的工作时间范围,然后应用时间差。因为给出的时间已经是下午1点,所以直接加上8小时可能会超过正常的工作时间范围。我们可以调整到不超过下午5点。
以下是简单的计算示例:
```sql
DECLARE @given_time DATETIME = '2024-09-23 13:00:00';
DECLARE @work_start_time TIME = '09:00'; -- 上午9点
DECLARE @work_end_time TIME = '17:00'; -- 下午5点
-- 计算添加工作时间后的结果
SET @work_duration_in_hours = DATEDIFF(minute, @work_start_time, @work_end_time) / 60.0;
SET @new_time = DATEADD(minute, 8 * 60 + (@given_time - DATEADD(hour, DATEDIFF(hour, 0, @given_time), 0)) % @work_duration_in_hours, DATEADD(day, DATEDIFF(day, 0, @given_time), 0));
SELECT @new_time AS '调整后的下班时间';
```
这个查询首先计算出工作日内每个小时内的分钟数,然后根据给定时间计算出超出工作时间段的部分,并加上8小时。如果最终时间超过了下午5点,它会停留在当天的下午5点。
注意:这个例子假定了每天都是标准工作日,如果有非工作日的情况,你需要额外处理。
阅读全文