Вниз
Скачать: CL | DM;

Делфи и SQL запрос с датой   Найти похожие ветки 

← →
ВицеЧайник   (2004-11-17 16:28) [0]

База Access

в Delphi:
TADOQuery.SQL если пишу:

Select Поле From База
 Where пДатаВремя BETWEEN #01/01/2004# AND #21/11/2005#

работает, а если так:
   
Select Поле From База
 Where пДатаВремя BETWEEN :prmDate1 AND :prmDate2

то результат Nul

в модуле:

   Active := False;
   Parameters.ParamValues["PrmDate1"] := Date;
   Parameters.ParamValues["PrmDate2"] := Date;
   Active := True;

где грабли?


← →
Johnmen ©   (2004-11-17 16:32) [1]

>где грабли?

Здесь
Parameters.ParamValues["PrmDate1"] := Date;
Parameters.ParamValues["PrmDate2"] := Date;

значения параметров будут одинаковы с точностью 13.7 наносекунд
:)


← →
Nikolay M. ©   (2004-11-17 16:32) [2]


> Parameters.ParamValues["PrmDate1"] := Date;
> Parameters.ParamValues["PrmDate2"] := Date;

Запорс получается вида

...
пДатаВремя >= Date AND пДатаВремя < Date


← →
Nikolay M. ©   (2004-11-17 16:34) [3]


> значения параметров будут одинаковы с точностью 13.7 наносекунд

Почему? Это же дата, ы?


← →
ВицеЧайник   (2004-11-17 16:38) [4]

При Date1 <> Date2 результат тот-же, я имел ввиду, что переменная там типа TDateTime ...


← →
ВицеЧайник   (2004-11-17 16:40) [5]

вдогонку: и даже, если они одинаковые, то должны выдавать записи, которые удовлетворяют условие (такие есть), а он молчит ...


← →
Johnmen ©   (2004-11-17 16:41) [6]

>Почему? Это же дата, ы?

Потому что я взглюкнул на тему Now<>Date
:)


← →
Johnmen ©   (2004-11-17 16:43) [7]

>ВицеЧайник   (17.11.04 16:40) [5]

Не-а. Не должен. Разве что время в составе значений поля таблицы есть 0.


← →
sniknik ©   (2004-11-17 17:22) [8]

>  Select Поле From База
>   Where пДатаВремя BETWEEN #01/01/2004# AND #21/11/2005#

не равно
 
> Select Поле From База
>  Where пДатаВремя BETWEEN :prmDate1 AND :prmDate2

> Active := False;
> Parameters.ParamValues["PrmDate1"] := Date;
> Parameters.ParamValues["PrmDate2"] := Date;

равнозначные параметры дадут тот же результат
Parameters.ParamValues["PrmDate1"] := StrToDate("01.01.2004");
Parameters.ParamValues["PrmDate2"] := StrToDate("21.11.2004");


← →
ВицеЧайник   (2004-11-19 09:46) [9]

Sniknik! большое спасибо.
Только, если не жалко времени, поясни, почему

работает
Parameters.ParamValues["PrmDate1"] := StrToDate("01.01.2004");

а не работает:
Parameters.ParamValues["PrmDate1"] := ПеременнаяTипа_TDateTime
в чём разница, ведь д.б.
ПеременнаяTипа_TDateTime = StrToDate("01.01.2004")


← →
sniknik ©   (2004-11-19 11:27) [10]

> а не работает:
> Parameters.ParamValues["PrmDate1"] := ПеременнаяTипа_TDateTime
не работает у тебя не потому что тот же DateTime другим способом задаеш а потому что и в первом и во втором параметре Date задаеш, периода не получается (0-0 что между ними?) а текущей даты у тебя в базе видимо нет.
вот так проверь, тоже сработает

Parameters.ParamValues["PrmDate1"] := StartOfAYear(Date);
Parameters.ParamValues["PrmDate2"] := Date;


← →
Anatoly Podgoretsky ©   (2004-11-19 12:22) [11]

ВицеЧайник   (17.11.04 16:40) [5]
Нет у тебя в базе таких записей



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.021 c
14-1101913628
Alexander Panov
2004-12-01 18:07
2004.12.19
"Свернуть все окна"


4-1099405572
DSKalugin
2004-11-02 17:26
2004.12.19
Как выгрузить чужую DLL из памяти программным путем


4-1099733725
howdo
2004-11-06 12:35
2004.12.19
почему не работает ShowWindow(WHandle, SW_RESTORE) ?


14-1100769903
Koala
2004-11-18 12:25
2004.12.19
Майкрософт использует крякнутый софт?


14-1101568573
OneFragLeft
2004-11-27 18:16
2004.12.19
Налоги.




   Наверх