我有一个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
答案 0 :(得分:2)
我会采取其他解决方案
SELECT whatever
FROM thetable
WHERE NOT (YEAR(datecolumn) = YEAR(GETDATE())
AND MONTH(datecolumn) = MONTH(GETDATE())
AND DAY(datecolumn) < 4)