Как использовать 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())
                             )
Другие вопросы по тегам