![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с запросом [D6, Access]
dim- © (2003-09-28 05:34:00)
Есть запрос:
dat.graph.SQL.Add("SELECT koord.dat, koord.km");
dat.graph.SQL.Add("FROM ship, Rive INNER JOIN koord ON Rive.id = koord.rive_id");
dat.graph.SQL.Add("WHERE (((Rive.id)="+RxDBLookupCombo1.Value+") AND (koord.ship_id=ship.id) AND ((ship.id)="+dat.Ship_Gr.FieldByName("id").asstring+")");
dat.graph.SQL.Add("and ((koord.dat>=:Dat) and (koord.dat<=:Dat)))");
dat.graph.Parameters.ParamByName("dat").Value:=DateEdit1.Date;
Проблема возникает когда пытаюсь задать ограничение в датах. В таблице храниться дата со временем тип Дататайм, мне надо выбрать за один день, а он не выводит, если убрать (koord.dat>=:Dat) выдает все записи.
Что можно сделать чтобы всетаки заработало?
sniknik (2003-09-29 08:19:00) [1]
такое?, нет конечно, подобное, да, алогичная операция в нем выглядит посложнее, так
Cast(Cast(koord.dat AS Int) AS DateTime) = :Dat
(хотя тут надо еще проверить откидывается дробная часть или округляется (не пользовался такой конструкцией, и уверенно сказать не могу, и проверять в лом, сам проверь))
если округляется то добавить явно отбрасывание
Cast(Round(Cast(koord.dat AS Int),0,1) AS DateTime) = :Dat
dim- (2003-09-28 19:19:00) [2]
Спасибо, помогло, а с MSSql такое прокатит?
sniknik (2003-09-28 15:13:00) [3]
можеш поставить условие так (только для Access)
Int(koord.dat) = :Dat вместо (koord.dat>=:Dat) and (koord.dat<=:Dat)
это как раз за один день (в Dat надо именно дату задавать тогда, не дататайм, впрочем параметр тоже можно ограничить)