Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1315609282
RAD
2011-09-10 03:01
2011.12.18
Последовательность вычисления параметров


2-1315739001
я
2011-09-11 15:03
2011.12.18
ftGraphic, DBGrid,ClientDataSet,DataSource


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


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


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский