2011-02-07 6 views
1

Я использую следующий запрос, чтобы перечислить эти записи между указанными датами. Но это не работает. Кроме того, не дает мне ошибку. Просто приходит пустое имя screen.it имеет имя столбца. Возникли проблемы с запросом?SQL Query Question

SET DATEFORMAT dmy 
select *from tamirarizakaydi where tarih between '31.01.2011 ' and ' 04.02.2011' 

благодарит заранее.

+0

У вас есть лишнее пространство в начале '' 04.02.2011'' и в конце '' 31 .01.2011 '' не знаю, влияет ли это на что-либо. Каков тип данных столбца 'tarih'? Также используйте формат ISO 'yyyymmdd'. –

ответ

2

Передние и конечные пробелы не имеют никакого значения, насколько я могу видеть.

SET DATEFORMAT dmy 
select CAST('31.01.2011 ' as date) , CAST(' 04.02.2011' as date), CAST('31.01.2011 ' as datetime), CAST(' 04.02.2011' as datetime) 

Возвращает

---------- ---------- ----------------------- ----------------------- 
2011-01-31 2011-02-04 2011-01-31 00:00:00.000 2011-02-04 00:00:00.000 

Я собираюсь предположить, что tarih хранится в виде строки или не имеют соответствующих строк.

Если tarih столбец символов на основе, то ваш запрос будет делать лексикографическое сравнение и искать строки, в которых tarih >= '31.01.2011 ' and 'tarih <= ' 04.02.2011' Нет строки могут соответствовать этому условию, как конец диапазона в алфавитном порядке перед началом диапазона.