Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выбор записей из базы по заданному диапазону дат  [new]
Ringin
Guest
Есть база access,в ней есть поле типа "Дата/время" работаю с ней через ODBC нужно составить запрос для выбора по датам.
Делаю следующий запрос:
SELECT * FROM Base WHERE (Natsalo>01/01/1990) AND (Natsalo<12/12/2007)
Возвращается ноль записей.
Подскажите что я не правильно делаю
5 июн 05, 13:05    [1597693]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62912
А у тебя есть такие даты в диапазоне от >0,005 и <0,004 одновременно, поскольку вторая дата должна быть меньеш первой, то есть по условию ни одна из дат не подходит под указаное условие
5 июн 05, 13:19    [1597704]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
Ringin
Guest
Не очень понял, если например дата 31.05.2005, условие "Natsalo>01/01/1990" выполняется и "Natsalo<12/12/2007" тоже выполняется
5 июн 05, 13:44    [1597743]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
Glory
Member

Откуда:
Сообщений: 104760
https://www.sql.ru/faq/faq_topic.aspx?fid=109
5 июн 05, 13:46    [1597745]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62912
Ringin
Не очень понял, если например дата 31.05.2005, условие "Natsalo>01/01/1990" выполняется и "Natsalo<12/12/2007" тоже выполняется

Первое еще как то похоже на дату, точнее можно сказать увидев запрос.
А вот ранее приведеное это 12 поделить на 12 а потом на 2007, помжешь проверить с помощью калькулятора, что вторая "дата" меньше первой, а это не даст тебе в ответ ни одной записи.
5 июн 05, 13:47    [1597746]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62912
Попробуй такой запрос
SELECT * FROM Base WHERE (Natsalo>01/01/1990) 
и увидишь что тебе выдастся
5 июн 05, 13:49    [1597749]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
Glory
Member

Откуда:
Сообщений: 104760
01/01/1990 = 0 as integer. 0 как число соответствует дате 1900-01-01
12/12/2007 тоже есть 0 as integer т.е. таже дата 1900-01-01
5 июн 05, 13:54    [1597756]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
Ringin
Guest
Так а как мне тогда сделать запрос который выбирал бы выбирал все записи из заданного диапазона дат?
5 июн 05, 13:58    [1597759]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ringin
Так а как мне тогда сделать запрос который выбирал бы выбирал все записи из заданного диапазона дат?

Читать предложенный ФАК
5 июн 05, 13:59    [1597760]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
Ringin
Guest
Да я почитал, но я не очень понял.
Помогите пожалуйсто составить запрос.
5 июн 05, 14:54    [1597784]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ringin
Да я почитал, но я не очень понял.
Помогите пожалуйсто составить запрос.

Что именно вы не поняли ?
Что если задаете дату в виде строки то надо ее в одинарные кавычки заключать ?
Или ее поняли, что эта символьная строка должна быть в виде 'YYYYMMDD' ?
5 июн 05, 15:02    [1597790]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
itON
Member

Откуда: Москва
Сообщений: 391
Эх...
SELECT * FROM Base WHERE (Natsalo>'01/01/1990') AND (Natsalo<'12/12/2007')
5 июн 05, 15:02    [1597791]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
itON
Member

Откуда: Москва
Сообщений: 391
Да, так надежней
SELECT * FROM Base WHERE (Natsalo>'19900101') AND (Natsalo<'20071212')
5 июн 05, 15:07    [1597796]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
Ringin
Guest
SELECT * FROM Base WHERE (Natsalo_rabot>='05/06/2005') AND (Natsalo_rabot<='05/06/2005')
Такой запрос дает ошибку "Несоответствие типов данных в условии отбора"


SELECT * FROM Base WHERE (Natsalo_rabot>='20050305') AND (Natsalo_rabot<='20050605')
Такой тоже дает ошибку "Несоответствие типов данных в условии отбора"
5 июн 05, 15:20    [1597803]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
BusyMan
Member

Откуда: Москва
Сообщений: 4927
itON
Да, так надежней
SELECT * FROM Base WHERE (Natsalo>'19900101') AND (Natsalo<'20071212')
Кстати, лирическое отступление, есть же еще BETWEEN:
 SELECT * FROM Base WHERE Natsalo BETWEEN '19900101' AND '20071212' 
5 июн 05, 15:24    [1597804]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62912
BusyMan
itON
Да, так надежней
SELECT * FROM Base WHERE (Natsalo>'19900101') AND (Natsalo<'20071212')
Кстати, лирическое отступление, есть же еще BETWEEN:
 SELECT * FROM Base WHERE Natsalo BETWEEN '19900101' AND '20071212' 

Запросы не идентичны по результатам
5 июн 05, 15:51    [1597817]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из базы по заданному диапазону дат  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
Если "Есть база access" -не шутка и не описка ,то дата должна быть в формате #mm/dd/yyyy#:
SELECT * FROM Base WHERE (Natsalo>#01/01/1990#) AND (Natsalo<#12/12/2007#)
5 июн 05, 17:06    [1597872]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить