Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Опять даты [D5, Paradox]


oleg krechetov ©   (2004-09-24 11:15:00) 

Доброго времени суток Всем!
Есть табличка Paradox вида:
Dates|Chan1|Chan2|
Dates (datetime)
Chan1 и Chan2 (числовые)
Как выбрать все данные за вчерашний день.
и еще
Как выбрать все данные за последний час.

Может кто знает, подскажите.
Спасибо.


sniknik   (2004-09-24 14:20:00) [1]

> Почему вот это:
...
> лучше чем вот это:
...
задаеш значение параметру раньше чем его обьявляеш, чюдо что вообще работает (вероятно запрос уже дан, в конманент внесен, и параметр определен).
и второе четкое сравнение (=) на нечеткие данные (datataime), почему работать может уже в [10] обьяснял.

в сумме все работало...
2-я ошибка самоуничтожилась ;о), не надейся что всегда так везти будет.

> А вот по времени как?
также как в [2] но выраженое в дельфевских функциях. ;о)


Johnmen   (2004-09-24 13:30:00) [2]

>sniknik ©   (24.09.04 13:21) [12]

Дело в другом. Да и я немного прогнал вначале.
>Как выбрать все данные за вчерашний день.

Сегодняшний день ему не нужен...Т.е. <Date


oleg krechetov   (2004-09-24 13:22:00) [3]

Да я переделал сделал отдельно поле даты и поле времени.
По дате сделал как в [10] все прекрасно рабодает.
А вот по времени как?
Почему вот это:
Query_Param_Days.Close;
Query_Param_Days.SQL.Text:='Select * From  ReadPribor Where Dates BETWEEN :p_datetime1 AND :p_datetime2';
Query_Param_Days.ParamByName('p_datetime1').AsDateTime:= Date()-1;
Query_Param_Days.ParamByName('p_datetime2').AsDateTime:= Date();
Query_Param_Days.Open;

лучше чем вот это:
Query_Param_Days.Close;
Query_Param_Days.ParamByName('p_datetime').AsDateTime:= Date-1;
Query_Param_Days.SQL.Text:='Select * From  ReadPribor Where Dates = :p_datetime';
Query_Param_Days.Open;


sniknik   (2004-09-24 13:21:00) [4]

> А у тебя тоже ошибка...:)
?
думаеш Date() на самом деле со временем результат дает? (возможно на D5, на D7 "чистая" дата)
а в остальном (?), вроде все верно. где?


Johnmen   (2004-09-24 13:14:00) [5]

>sniknik ©   (24.09.04 13:11) [10]

А у тебя тоже ошибка...:)


sniknik   (2004-09-24 13:11:00) [6]

Query_Param_Days.Close;
Query_Param_Days.SQL.Text:='Select * From  ReadPribor Where Dates BETWEEN :p_datetime1 AND :p_datetime2';
Query_Param_Days.ParamByName('p_datetime1').AsDateTime:= Date()-1;
Query_Param_Days.ParamByName('p_datetime2').AsDateTime:= Date();
Query_Param_Days.Open;

так будет лучше, поверь.
кстати если вдруг случилось чудо и с параметром вначале оно у тебя сработало и выдавало нужные результаты то либо у тебя тип поля не date timeлибо в данных голые даты.


Johnmen   (2004-09-24 12:59:00) [7]

Да и по дате неправильно делаешь...


oleg krechetov   (2004-09-24 12:57:00) [8]

По дате делаю так:

Query_Param_Days.Close;
Query_Param_Days.ParamByName('p_datetime').AsDateTime:= Date-1;
Query_Param_Days.SQL.Text:='Select * From  ReadPribor Where Dates = :p_datetime';
Query_Param_Days.Open;

А по времени как?


Johnmen   (2004-09-24 12:42:00) [9]

А как "никак" ? Всё же аналогично...


oleg krechetov   (2004-09-24 12:40:00) [10]

С датами все получилось, а вот со временем никак.


sniknik   (2004-09-24 12:13:00) [11]

> SQL Explorer ругается, говорит:
естественно... ты же небось в родные драйвера полез? а это для jet-а (у тебя же движок не указан). (теоретически должно сработать и у тебя, если в ехплорере выбрать(создать) алиас на ODBC мелкософт парадокс драйвер)

с родным см лучше на пример от Johnmen ©   (24.09.04 11:36) [1]


Anatoly Podgoretsky   (2004-09-24 12:10:00) [12]

Используй параметры, как в примере [1]


oleg krechetov   (2004-09-24 11:58:00) [13]

SQL Explorer ругается, говорит:
Invalid use of keyword :  Date()-1 AND Date() и
Invalid use of keyword :  Date()+TimeSerial(Hour(Time()), 0, 0)

Может кавычки где нужны, или чтото другое.


sniknik   (2004-09-24 11:39:00) [14]

за вчерашний день
SELECT * FROM ATab WHERE Dat BETWEEN Date()-1 AND Date()
за последний час
SELECT * FROM ATab WHERE Dat >= Date()+TimeSerial(Hour(Time()), 0, 0)


Johnmen   (2004-09-24 11:36:00) [15]

Запрос с параметром
...WHERE Dates BETWEEN :D1 AND :D2
Значения параметров вычисляешь в своем приложении.


Наверх

Титульная страница Поиск, карта сайта Написать письмо