Как использовать DATEPART из GETDATE в качестве переменной для запроса
Это может быть проще, чем я, я довольно плохо знаком с SQL.
У меня есть база данных с большим количеством дат выпуска фильмов в формате ГГГГ-ММ-ДД.
Я пытаюсь написать запрос, который вернул бы фильмы, выпущенные на текущую дату (MM-DD) в разные годы.
Я пытался использовать:
WHERE ReleaseDate LIKE '%-(DATEPART(mm,GETDATE())-(DATEPART(dd,GETDATE())'
Но это ничего не возвращает.
"WHERE ReleaseDate LIKE '% -06-03'" работает, но я бы очень хотел автоматизировать это.
2 ответа
Решение
Arrg! Не использовать LIKE
с датами.
Как насчет просто сделать что-то вроде этого:
where DATEPART(month, ReleaseDate) = DATEPART(month(GETDATE()) AND
DATEPART(day, ReleaseDate) = DATEPART(day, GETDATE())
Или проще:
where month(ReleaseDate) = month(getdate()) and
day(ReleaseDate) = day(getdate())
Вы лечите datapart
и т.д. как строковый литерал, поместив его в кавычки.
Вы могли бы использовать concat
построить эту строку динамически:
WHERE ReleaseDate LIKE CONCAT('%-',
(DATEPART(mm,GETDATE()),
'-',
(DATEPART(dd,GETDATE())
)