使用日期筛选日期时间列规则



我有这个表,其中的列与一周中的几天以及fromTime到toTime相对应。我想知道如何通过日期筛选表格。我下面有这个代码。日期必须返回第3行,因为它是第一个满足规则的行。

我的表属性如下:

周二周三周四周五从时间到时间0<1>00:00:0023:59:59
周一
1 000:02:0023:59:59
0 1 1 0
0 0 1

如果一周中的某一天是一列,存储一个数字,那么查询可能会更简单。但如果你必须使用现有的结构,试着确定星期几的数字,然后将其与每个"数字"进行比较;"天";列:

DECLARE @DOW INT 
SET @DOW = ((DatePart(dw, getDate()) + @@DATEFIRST-1) % 7+1);
SELECT *
FROM   YourTable
WHERE  FromTime <= CAST(getDate() AS TIME)
AND    ToTime >= CAST(getDate() AS TIME)
AND  ( 
(  @DOW = 2 AND Monday = 1 ) 
OR
(  @DOW = 3 AND Tuesday = 1 )
OR
(  @DOW = 4 AND Wednesday = 1 )
OR
(  @DOW = 5 AND Thursday = 1 )
OR
(  @DOW = 6 AND Friday = 1 )
)   
Monday
0
DECLARE @dotw NVARCHAR(20)
DECLARE @sql NVARCHAR(255)
DECLARE @sqlInsert NVARCHAR(255)
SET @requestDate = '2022-03-03 00:00:00.0000000'
SET @dotw = datename(w, @requestDate)
SET @sql = 'select * from [YourTable] where [YourTable].' + QUOTENAME(@dotw) + ' = 1'  
EXEC sp_executesql @sql

我的答案。这里唯一的问题是将exec的结果存储在cte中。

相关内容

  • 没有找到相关文章

最新更新