SQL Server Dateadd - Получить интервал, если еще в запросе выбора? - PullRequest
1 голос
/ 12 сентября 2011

В зависимости от диапазона частот (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()

Ответы [ 2 ]

5 голосов
/ 12 сентября 2011

Должно быть что-то вроде

…
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 = <i>today</i>
3 голосов
/ 12 сентября 2011

думаю поменять порядок сравнения:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...