Почему сравнение дат в sql не работает. Пожалуйста помоги - PullRequest
3 голосов
/ 22 апреля 2010

Я пытаюсь получить некоторые записи из таблицы, но когда я использую ИЛИ вместо И, он возвращает мне несколько записей, но не в другом случае. Даты, приведенные точно, присутствуют в табл. Какую ошибку я делаю?

select newsid,title,detail,hotnews 
from view_newsmaster
where  datefrom>=CONVERT(datetime, '4-22-2010',111) 
  AND dateto<=CONVERT(datetime, '4-22-2010',111)

Ответы [ 4 ]

2 голосов
/ 22 апреля 2010

Я думаю, что у вас есть "от" и "до" в неправильном направлении ...

select newsid,title,detail,hotnews from view_newsmaster 
 where  dateto>=CONVERT(datetime, '4-22-2010',111) AND datefrom<=CONVERT(datetime, '4-22-2010',111) 
2 голосов
/ 22 апреля 2010

Трудно сказать без каких-либо примерных данных из вашей таблицы.

Я бы проверил, сколько записей имеют значение datefrom больше dateto - мне это кажется странным - это может быть причиной того, что запрос с AND не возвращает что-нибудь.

Попробуйте заменить dateto значение на CONVERT(datetime, '4-23-2010',111) - имейте в виду, что CONVERT(datetime, '4-22-2010',111) это полночь (начало дня) 22 апреля, а не конец дня.

1 голос
/ 22 апреля 2010

Это потому, что даты подразумевают время 00:00:00, и не указание времени исключит записи, приходящиеся на день, но технически находятся в пределах диапазона.

Укажите время:

where  datefrom>=CONVERT(datetime, '4-22-2010 00:00:00',111) 
  AND dateto<=CONVERT(datetime, '4-22-2010 23:59:59',111)

Или еще лучше, используйте оператор МЕЖДУ:

where  fDateField BETWEEN '4-22-2010' AND '4-23-2010'

Обратите внимание, что второй датой является дата + 1, т.е. следующий день, который в основном является датой 23: 59: 59

0 голосов
/ 22 апреля 2010

Когда вы используете AND, вы получите даты между двумя датами (в данном случае это одна и та же дата).

Когда вы используете OR, вы получите даты больше первого и меньше второго.

Это два разных условия, поэтому понятно, что ваши результаты будут разными.

Чего ты пытаешься достичь? Что должен вернуть этот запрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...