简体   繁体   English

SQL Server Dateadd-从选择查询中是否获取间隔?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM