2015-03-02 2 views
0

Я использую эту команду, она не извлекает запись. моя командазапись не извлекается из базы данных в SQL-запросе

select * from policy_record_manual where (CONVERT(VARCHAR(MAX), enddate, 103) BETWEEN CONVERT(VARCHAR(MAX), '25/02/2015', 103) AND CONVERT(VARCHAR(MAX), '04/03/2015', 103)) 

У меня есть две записи в enddate колонке, которая лежит между 25/02/2015 и 04/03/2015, но до сих пор не извлечение какого-либо результата. пожалуйста, помогите

+0

Вместо использования> 24/02/2015 и <05/03/2015 и конвертировать обе стороны в том же формате. Использовать Varchar (10) – Amit

+4

Какая *** система баз данных *** это для? –

+0

и как я могу написать –

ответ

3

Используйте форматы надлежащей даты и Ваш запрос должен работать:

select * 
from policy_record_manual 
where enddate between '2015-02-05' and '2015-03-04' 

Вы делаете сравнение в виде строк. Не сравнивайте дату/время как строки. Сравните их с использованием родных типов.

Вы всегда должны сравнивать даты и даты с датами, а не строками. Большинство баз данных, включая SQL Server, поддерживают стандарт ISO для дат и распознают строки в этом формате.

-1

попробовать этот

select * 
from policy_record_manual 
where (CONVERT(VARCHAR(MAX), enddate, 103) BETWEEN CONVERT(VARCHAR(MAX), '02/25/2015', 103) AND CONVERT(VARCHAR(MAX), '03/04/2015', 103)) 
+0

не работает, так же, как и моя команда –

+0

s, но изменил формат даты, в который я ввел –

+0

все еще не работает –

0

Если вы используете SQL Server, вы можете изменить формат даты в запросе, используя SET DATEFORMAT заявление.

set dateformat dmy 
declare @begin datetime='25/02/2015' 
declare @end datetime='04/03/2015' 

select * 
from policy_record_manual 
where enddate between @begin and @end 
Смежные вопросы