Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL-запрос с диапозоном даты [D7, XP]


WorkWork ©   (2011-09-14 03:14:00) 

Привет всем. пишу запрос к Аксесу


SELECT *
FROM anketa
WHERE d_zan Between #09/13/2011# And #09/14/2011#;


Формат даты я так понимаю у аксеса mm/dd/yyyy. Выдает только запись где 13 число, хотя в базе есть запись с 14 числом. Пробывал также


(d_zan>=#09/13/2011#) and (d_zan<=#09/14/2011#)


также выдает только запись с 13 числом. Подскажите как можно написать такой запрос чтобы правильно работал.


sniknik   (2011-09-14 10:30:00) [1]

чисто ради развлечения посмотри что не так в условии, и как будет работать...
SELECT *
FROM Reestr
WHERE PayDate Between #09/13/2011# And #14/09/2011#


Кщд   (2011-09-14 10:21:00) [2]

>И. Павел ©   (14.09.11 08:18) [8]
>Формируйте запрос динамически. Примерно так:
(:p1 is null or d_zan >= :p1)

>И. Павел ©   (14.09.11 08:19) [9]
>Если для вас сложно прибавить 1 день к параметру, то округляйте до >целого поле в таблице d_zan перед тае, как сравнивать его с параметром.
отличный совет, чтобы запретить использовать индекс


Inovet   (2011-09-14 10:18:00) [3]

> [13] WorkWork   (14.09.11 08:56)
> да ну брось, наверно это просто лень.

> [2] Anatoly Podgoretsky ©   (14.09.11 07:37)
> А у тебя есть записи с датой 14.09.2011 00:00:00

> [4] WorkWork   (14.09.11 08:01)
> какой еще сущности?
> есть записи
> 14.09.2011 0:14:46

14.09.2011 00:00:00 меньше 14.09.2011 0:14:46
Тебе лень, а другим не лень тебе здесь указывать на ошибки?


Anatoly Podgoretsky   (2011-09-14 09:05:00) [4]

> WorkWork  (14.09.2011 08:56:13)  [13]

Это не лень, а незнание и непонимание.


WorkWork   (2011-09-14 08:56:00) [5]


> Anatoly Podgoretsky ©   (14.09.11 08:39) [12]


да ну брось, наверно это просто лень.


Anatoly Podgoretsky   (2011-09-14 08:39:00) [6]

> WorkWork  (14.09.2011 08:14:07)  [7]

Это же надо как не повезло.


Anatoly Podgoretsky   (2011-09-14 08:38:00) [7]

> WorkWork  (14.09.2011 08:01:04)  [4]

Полное непонимание, искренее


WorkWork   (2011-09-14 08:26:00) [8]

точно заработало!!! спс


И. Павел   (2011-09-14 08:19:00) [9]

> это слишком сложно каждый раз прибавлять 1 день

Если для вас сложно прибавить 1 день к параметру, то округляйте до целого поле в таблице d_zan перед тае, как сравнивать его с параметром.


И. Павел   (2011-09-14 08:18:00) [10]

> [6] WorkWork   (14.09.11 08:10)

Формируйте запрос динамически. Примерно так:

if (дата 1 введена) then
begin
 SQL := SQL + 'd_zan >= :P1';
 <задаем первый параметр>
end;
if (дата 2 введена) then
begin
 if (дата 1 введена) then SQL := SQL + ' AND ';
 SQL := SQL + 'd_zan < :P2';
 <задаем второй параметр, прибавив к нему единицу и не забыв округлить до целой части>
end;


WorkWork   (2011-09-14 08:14:00) [11]

это слишком сложно каждый раз прибавлять 1 день. неужели нет какого-то простого метода. может я чего-то непонимаю в этой инструкции битвин или работе с датами. Чесно говоря гугл обшарил и не нашел похожих вопросов((((


WorkWork   (2011-09-14 08:10:00) [12]

Дело в том, что у меня в отчете идет выборка по дате. Там стоят 2 поля "От" и "До". пользователь может заполнить оба поля, либо какое-то одно из них.


И. Павел   (2011-09-14 08:06:00) [13]

> [0] WorkWork   (14.09.11 03:14)

Выбирайте записи больше или равно 9.13.2011 и меньше 9.15.2011.


WorkWork   (2011-09-14 08:01:00) [14]


> и не понимания сущости.


какой еще сущности? если верить логике, то поидее все правильно, если не какие-то "НО".


> А у тебя есть записи с датой 14.09.2011 00:00:00


есть записи
13.09.2011 20:55:40
и
14.09.2011 0:14:46

и другие, но в результат попадает только с 13 числом.


Anatoly Podgoretsky   (2011-09-14 07:38:00) [15]


> используй параметры.

Простая замена на параметры ему не поможет


Anatoly Podgoretsky   (2011-09-14 07:37:00) [16]

> WorkWork  (14.09.2011 03:14:00)  [0]

А у тебя есть записи с датой 14.09.2011 00:00:00
Это любимая ошибка при использование Between и не понимания сущости.

d_zan < #09/15/2011#


MonoLife   (2011-09-14 04:11:00) [17]

> Формат даты я так понимаю у аксеса mm/dd/yyy
разве?
используй параметры.


Наверх

Титульная страница Поиск, карта сайта Написать письмо