Форум: "Начинающим";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2011.12.18;
Скачать: [xml.tar.bz2];




Вниз

SQL-запрос с диапозоном даты 


WorkWork   (2011-09-14 03:14) [0]

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


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 числом. Подскажите как можно написать такой запрос чтобы правильно работал.



MonoLife ©   (2011-09-14 04:11) [1]

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



Anatoly Podgoretsky ©   (2011-09-14 07:37) [2]

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

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

d_zan < #09/15/2011#



Anatoly Podgoretsky ©   (2011-09-14 07:38) [3]


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

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



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


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


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


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


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

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



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

> [0] WorkWork   (14.09.11 03:14)

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



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

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



WorkWork   (2011-09-14 08:14) [7]

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



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

> [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;



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

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

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



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

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



Anatoly Podgoretsky ©   (2011-09-14 08:38) [11]

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

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



Anatoly Podgoretsky ©   (2011-09-14 08:39) [12]

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

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



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


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


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



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

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

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



Inovet ©   (2011-09-14 10:18) [15]

> [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
Тебе лень, а другим не лень тебе здесь указывать на ошибки?



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

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

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



sniknik ©   (2011-09-14 10:30) [17]

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




Форум: "Начинающим";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2011.12.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.75 MB
Время: 0.03 c
2-1315648401      Pushok                2011-09-10 13:53  2011.12.18  
При закрытии Delphi вылетает AV


2-1315504959      x2088                 2011-09-08 22:02  2011.12.18  
Системное меню окна


15-1314908994     Юрий                  2011-09-02 00:29  2011.12.18  
С днем рождения ! 2 сентября 2011 пятница


15-1314451347     Rouse_                2011-08-27 17:22  2011.12.18  
Так проверим же алгебру гармонией! :)


2-1315223947      vasiliy87             2011-09-05 15:59  2011.12.18  
Вопрос о параметрах интефейсных функций