Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.12.18;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
2-1315383105
Pushok
2011-09-07 12:11
2011.12.18
На форме исчезает TreeView


15-1314617994
Юра Погудин
2011-08-29 15:39
2011.12.18
Проблема с форматированием Windows


15-1312615274
PreDatoR
2011-08-06 11:21
2011.12.18
Ваши любимые компьютерные игры


2-1315866669
WorkWork
2011-09-13 02:31
2011.12.18
SQL-запрос в Access


15-1314687363
RDen
2011-08-30 10:56
2011.12.18
Список документов