![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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
разве?
используй параметры.