Как выбрать все строки между двумя датами, где dateformat равен DD.MM.YYYY
?Выбрать между датами в формате DD.MM.YYYY?
Например между 15.12.2013
и 25.12.2013
Как выбрать все строки между двумя датами, где dateformat равен DD.MM.YYYY
?Выбрать между датами в формате DD.MM.YYYY?
Например между 15.12.2013
и 25.12.2013
Как Гордон и лошадь комментировали, вы должны серьезно рассмотреть вопрос о хранении ваших дат в качестве типа даты, а не как текст. При этом вы можете преобразовать свой столбец даты в datetime
с помощью функции SQL Server CONVERT()
, а затем сравнить ее с диапазоном дат.
SELECT *
FROM yourTable
WHERE CONVERT(datetime, date_col, 104) BETWEEN '2013-12-15' AND '2013-12-25'
Вместо того, чтобы преобразовывать datetime
, используя between
, и с помощью YYYY-MM-DD
;
Я рекомендовал бы преобразования в date
, используя >= and <=
и YYYYMMDD
:
select *
from t
where convert(date, date_col, 104) >= '20131215'
and convert(date, date_col, 104) <= '20131225'
В качестве примера, даже если вы пытаетесь использовать, казалось бы, однозначный YYYY-мм- DD, это может сломаться в определенных сценариях - например, когда языковые настройки пользователя установлены на французский язык:
Исправьте данные для хранения даты как даты, а не строки. –
Даты не имеют формата. Вы храните их как 'varchar'? –