日期查询以选择当月的1日至3日并与一列进行比较

时间:2019-08-30 15:04:25

标签: sql sql-server azure-functions

我有一个azure函数,该函数运行并执行每个月的1号到3号之间分布的命令。我有一列“ datecolumn”,它随着每行受到影响的时间而更新。

所有行的日期列都在每月的1号到3号之间,我想检查该日期是否小于当前日期的1st-3号,以确保每行仅受到影响每月一次。

让我们说这是2020年1月3日,我希望查询查找并遍历所有行,并忽略那些本月已被更改的行,即datecolumn显示2020年1月1日或2日,而仅选择那些已更改的行并具有上个月某个时间(2019年12月)的日期列值。

预期结果:日期为当月1日至3日。

我尝试了一些代码,但是我得到了正确的日子,但是每年都会选择。

谢谢

DECLARE @startDate DATETIME=CAST(MONTH(GETDATE()) AS VARCHAR) + '/' + '1/' +  + CAST(YEAR(GETDATE()) AS VARCHAR) -- mm/dd/yyyy
DECLARE @endDate DATETIME=CAST(MONTH(GETDATE()) AS VARCHAR) + '/' + '3/' +  + CAST(YEAR(GETDATE()) AS VARCHAR)  -- mm/dd/yyyy

;WITH Calender AS 
(
    SELECT @startDate AS CalanderDate
    UNION ALL
    SELECT CalanderDate + 1 FROM Calender
    WHERE CalanderDate + 1 <= @endDate
)
 SELECT * FROM thetable where datecolumn BETWEEN @startDate AND @endDate

1 个答案:

答案 0 :(得分:2)

我会采取其他解决方案

SELECT whatever 
FROM thetable 
WHERE NOT (YEAR(datecolumn) = YEAR(GETDATE()) 
      AND MONTH(datecolumn) = MONTH(GETDATE()) 
      AND DAY(datecolumn) < 4)