[英]SQL Server Dateadd - Get interval from if else in select query?
Depending on Frequency Range (nvarchar), which can be 'Weekly' or 'Monthly', I would like to use the result to set the interval of the dateadd function 根据频率范围(nvarchar)(可以是“每周”或“每月”),我想使用结果来设置dateadd函数的间隔
SELECT rs.ScheduledStartDate, rs.ScheduledEndDate, rs.Frequency, rs.FreqRange, rs.LastCreated
FROM RosterSchedule rs
WHERE dateadd(case when rs.FreqRange = 'Weekly' Then day else month end), rs.Frequency, rs.LastCreated) = GETDATE()
Should possibly be something like 应该可能像
…
WHERE
CASE
WHEN rs.FreqRange = 'Weekly' THEN DATEADD(WEEK, rs.Frequency, rs.LastCreated)
WHEN rs.FreqRange = 'Monthly' THEN DATEADD(MONTH, rs.Frequency, rs.LastCreated)
END = today
I think reverse the order of the comparison: 我认为颠倒比较的顺序:
WHERE CAST(GETDATE() AS DATE) = CASE
WHEN rs.FreqRange = 'Weekly' THEN DATEADD(Week, rs.Frequency, rs.lastcreated)
WHEN rs.FreqRange = 'Monthly' THEN DATEADD(Month, rs.Frequency, rs.lastcreated)
ELSE '1/1/1900' -- Adjust this as needed
END
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.