SQL服务器:如何判断一个时间段是否在一个时间段内并扣除时间间隔?

SQL Server: How to check a time period whether falls in a period and deduct out the time interval?

大家好。

我的任务是检查时间是否进入休息时间。如果是,我扣掉休息时间。

由于不同时段的休息时间不同,所以我使用 Date X 来检查使用哪个休息时间来计算。

我传入的参数是时间A(2019-11-2810:30:00.000)、时间B(2019-11-2811:30:00.000)和日期X(20191128)

在我的数据库中,有

•Effective From, VARCHAR(YYYYMMDD, 20191127)

•Effective To, VARCHAR(YYYYMMDD, 20191131)

•Break Time 1 Start Time, VARCHAR (HHMMSS, 104500)

•Break Time 1 Duration, INT (30) ... till Break time N.

我没有名为 Break Time n End Time 的列,我需要通过将 Break Time n Duration 添加到 Break Time n Start 来确定自己。

到目前为止我尝试的是

•convert 104500 to 10:45:00 using left, substring and right function

•add 30 minutes using DATEADD(minutes, 30, 10:45:00)

但是 return 是 1990-01-01 11:15:00.000

我无法比较1990-01-01 11:15:00.0002019-11-28 10:30:00.000来检查和计算时间间隔。

有什么克服这个问题的建议吗?非常感谢。

casttime 这样你可以比较一下。

select cast('2019-11-28 10:30:00.000' as time), cast('1990-01-01 11:15:00.000' as time)

输出:

将你的时间添加到约会中。

declare @time varchar(10) ='104500' 
select cast(concat(cast('20191127' as date), ' ', left(@time,2)+ ':' + substring(@time,3,2) + ':' + right(@time,2)) as datetime)