我正在嘗試提出 T-SQL 查詢,它檢查一個表(Stage)中的日期,然后查找另一個表(DIM)以了解日期范圍所在的位置,然后根據范圍進行計算。
這是Stage表(資料型別為 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
我需要根據 Stage.punch_start 位于(包括)之間的位置來應用它是-4還是-5 :
這是Dim表(資料型別為 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 ) 應用于Stage表中的 punch_start?
因此,例如,如果 punch_start 是 '2022-03-20',它會添加-4。
如果 punch_start 是 '2022-04-03',則添加-5。
我想我知道如何從 NVARCHAR 更改為 DATE 格式并進行添加(如 TRY_CONVERT(DATE,punch_start,104)),但我不確定獲取日期范圍的邏輯應該如何。
這是一個選擇陳述句,我可以在其中將原始資料型別 (nvarchar 255) 顯示為 DATE。
select distinct TRY_CONVERT(DATE, punch_start, 104) as punch_start from [dbo].[Stage] order by punch_start asc
uj5u.com熱心網友回復:
目前尚不清楚您期望的結果是什么,但以下內容是否足以讓您繼續下去?
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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/468281.html
標籤:tsql
