在其他 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或-5(hour_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;
我正在尝试提出 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或-5(hour_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;