SQL-每年定期的假日期间

SQL-每年定期的假日期间,sql,time,calendar,snowflake-cloud-data-platform,Sql,Time,Calendar,Snowflake Cloud Data Platform,我国每年都有特定的假期,持续46天。 我正在编写一个代码,它将返回每年假期的日期范围 起点是“复活节”的开始,我从中减去46天 目前,代码只允许我区分一年的期望周期 SELECT * FROM TIME_DIM WHERE DATE BETWEEN (SELECT TOP 1 DATEADD(day, -46, DATE) as DATE FROM TIME_DIM WHERE HOLIDAY = 'EASTER' ORDER BY DATE)

我国每年都有特定的假期,持续46天。 我正在编写一个代码,它将返回每年假期的日期范围

起点是“复活节”的开始,我从中减去46天

目前,代码只允许我区分一年的期望周期

SELECT * FROM TIME_DIM WHERE DATE BETWEEN (SELECT TOP 1 DATEADD(day, -46, DATE) as DATE FROM TIME_DIM WHERE HOLIDAY = 'EASTER' ORDER BY DATE) AND (SELECT TOP 1 DATE FROM TIME_DIM WHERE HOLIDAY = 'EASTER' ORDER BY DATE ORDER BY DATA) ORDER BY DATA
这样的办法应该行得通

With HolidayCte as (
Select Year,  date as 'Easter',Dateadd(dd,-46,date) as HolidayStarts
from Time_Dim
Where td.Holiday = 'Easter'
)

Select td.*
from Time_Dim td
join HolidayCte hc on hc.Year = td.year and td.Date between hc.HolidayStarts and hc.Easter 

“Join between”也起到了作用:

`SELECT B.DATE AS DATE FROM TIME_DIM A JOIN TIME_DIM B ON B.DATE BETWEEN DATEADD(day, -46, A.DATE) AND DATEADD(day, -1,A.DATA) WHERE A.HOLIDAY_NAME = 'Easter' ORDER BY B.DATA`
您使用的是哪种数据库管理系统?这里使用了一些特定于产品的功能…可以方便地为您提供帮助:。抱歉,这是“雪花”dwh上的功能