2017-02-20 15 views
1

Как выбрать все строки между двумя датами, где dateformat равен DD.MM.YYYY?Выбрать между датами в формате DD.MM.YYYY?

Например между 15.12.2013 и 25.12.2013

+3

Исправьте данные для хранения даты как даты, а не строки. –

+6

Даты не имеют формата. Вы храните их как 'varchar'? –

ответ

2

Как Гордон и лошадь комментировали, вы должны серьезно рассмотреть вопрос о хранении ваших дат в качестве типа даты, а не как текст. При этом вы можете преобразовать свой столбец даты в datetime с помощью функции SQL Server CONVERT(), а затем сравнить ее с диапазоном дат.

SELECT * 
FROM yourTable 
WHERE CONVERT(datetime, date_col, 104) BETWEEN '2013-12-15' AND '2013-12-25' 
2

Вместо того, чтобы преобразовывать 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, это может сломаться в определенных сценариях - например, когда языковые настройки пользователя установлены на французский язык: