Форум: "Начинающим";
Текущий архив: 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#
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.12.18;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c