powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / BETWEEN как?
5 сообщений из 5, страница 1 из 1
BETWEEN как?
    #35585665
Фотография lena_ki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой запрос возвращает 3 правильные записи:
select * from intellitracx8 where unit_id ='1010000002' and datatime between '2008-10-07 00:00:00' and '2008-10-08 23:59:00' and speed != 0

Теперь делаю запрос через код с параметрами:
select * from intellitracx8 where unit_id = :unitid and datatime between :datastart and :datastop and speed != 0
Использую С++ Builder:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
void __fastcall TFormMidas::Button1Click(TObject *Sender)
{
 ADOQueryPoints->Active = false;
 ADOQueryPoints->Parameters->ParamByName("unitid")->Value =  1010000002 ;
 ADOQueryPoints->Parameters->ParamByName("datastart")->Value = DateTimePicker1->DateTime;
 ADOQueryPoints->Parameters->ParamByName("datastop")->Value = DateTimePicker2->DateTime;
 ADOQueryPoints->Active = true;
 int v = ADOQueryPoints->RecordCount;//проверка
}

Тип выбора в инспекторе для DateTimePicker Kind = dtkDate. В первом DateTimePicker1 свойство Time в инспекторе 00:00:00, во втором 23:59:00

В точке остонова вижу, что в обоих DataTimePicker-ах такие значения:
ADOQueryPoints->Parameters->ParamByName("datastart")->Value = 39728 (7 число)//точка останова
а
SimpleMidas->ADOQueryPoints->Parameters->ParamByName("datastop")->Value = 39729.999988 (8 число)

но строка int v = ADOQueryPoints->RecordCount; показывает 0 записей, а должно быть 3.

Если поставить 9-ое число в datastop, то все нормально. Как сие дело победить?

Такое впечателение, что происходит округление datastop до числа 39729 т.е. отбрасывается время 23:59:00

Пробую так сделать запрос:
Код: plaintext
SELECT * FROM intellitracx8WHERE unit_id = '1010000002'  AND datatime BETWEEN to_timestamp('2008-10-07 00:00:00','YYYY-DD-MM HH24:MI:SS') AND to_timestamp('2008-10-08 23:59:59','YYYY-DD-MM HH24:MI:SS')  AND speed !=  0  

Cнова возвращается 0 записей. Как в PostgreSQL сделать правильный запрос, чтобы учитывалось и время и дата?
Спасибо.
...
Рейтинг: 0 / 0
BETWEEN как?
    #35589188
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не уверен в ADO. пробовали земенить
Код: plaintext
ParamByName("unitid")->Value  
на
Код: plaintext
ParamByName("unitid")->DateTime 
или
Код: plaintext
ParamByName("unitid")->AsDateTime 

это раз.

два.

настоятельно рекомендую Вам попробовать замечательные бесплатные VCL компоненты прямого доступа к базе
Zeos Database Objects
все эти нюансы (и многое другое) там отлично решено.

ИМХО ничего плохого к ADO не имею.
...
Рейтинг: 0 / 0
BETWEEN как?
    #35590796
Фотография lena_ki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>ParamByName("unitid")->DateTime
не помогло.


>ParamByName("unitid")->AsDateTime
У ADOQuery нет ->AsDateTime


Решение, в моем случае, стало это изменение эапроса:
Код: plaintext
1.
2.
3.
4.
5.
select * 
from intellitracx8 
where unit_id ='1010000002' 
and datatime >='2008-10-07 00:00:00' 
datatime < '2008-10-09 00:00:00'
and speed !=  0 
...
Рейтинг: 0 / 0
BETWEEN как?
    #35594963
Noriffik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lena_ki>ParamByName("unitid")->DateTime
не помогло.


>ParamByName("unitid")->AsDateTime
У ADOQuery нет ->AsDateTime


Решение, в моем случае, стало это изменение эапроса:
Код: plaintext
1.
2.
3.
4.
5.
select * 
from intellitracx8 
where unit_id ='1010000002' 
and datatime >='2008-10-07 00:00:00' 
datatime '2008-10-09 00:00:00'
and speed !=  0 


У ADOQuery в свойствах параметра указывается тип данных ftDateTime.
Код: plaintext
ADOQuery.Params.ParamByName['time'].DataType:=ftDataTime;
...
Рейтинг: 0 / 0
BETWEEN как?
    #35595573
Фотография lena_ki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>У ADOQuery в свойствах параметра указывается тип данных ftDateTime.

Установлено в инспекторе объектов. Может что-то с драйвером досупа к базе...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / BETWEEN как?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]