在其他 table 中查找值范围并根据范围进行计算

Look up value in other table for range and do the calculation according to the range

我正在尝试提出 T-SQL 查询,它检查一个 table 中的日期(Stage),然后查找other table (DIM) 为日期范围所在的位置,然后根据范围进行计算。

这是Stagetable(数据类型为nvarchar(255))。

punch_start
Mar 29 2022  7:00AM
Mar 23 2022 10:28PM
Apr 11 2022  7:12AM
Apr  5 2022  2:18PM
Mar 30 2022 11:00AM
Apr  7 2022  6:57AM
Apr  7 2022 12:00AM
Mar 23 2022  6:44AM
Mar 24 2022  4:00PM
Apr 14 2022 11:18AM
Apr  2 2022  1:34PM

我需要申请是-4还是-5根据Stage.punch_start之间的位置(含) :

这是Dim table(数据类型是DATE)。

start_dt    end_dt      hour_diff
2022-01-22  2022-03-12  -5
2022-03-13  2022-03-30  -4
2022-03-31  2022-04-15  -5
2022-04-16  2023-11-04  -4

如何加入关系并申请(添加)-4-5hour_diff) 到舞台 punch_start table?

因此,例如,如果 punch_start 是“2022-03-20”,它会添加 -4

如果 punch_start 是 '2022-04-03',它添加 -5.

我想我知道如何将 NVARCHAR 格式更改为 DATE 格式并进行加法(如 TRY_CONVERT(DATE, punch_start, 104)),但我不确定逻辑应该如何获取日期范围。

这是一个 select 语句,我可以在其中将原始数据类型 (nvarchar 255) 显示为 DATE。

select distinct TRY_CONVERT(DATE, punch_start, 104) as punch_start from [dbo].[Stage] order by punch_start asc

不清楚您对结果的期望,但以下是否足以让您继续下去?

select punch_start, DateAdd(hour,hour_diff,ps) newDate
from stage s
cross apply(values(Try_Convert(datetime,punch_start)))x(ps)
left join dim d on ps between d.start_dt and d.end_dt;