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

Проблема с запросом   Найти похожие ветки 

 
dim- ©   (2003-09-28 05:34) [0]

Есть запрос:
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-28 15:13) [1]

можеш поставить условие так (только для Access)
Int(koord.dat) = :Dat вместо (koord.dat>=:Dat) and (koord.dat<=:Dat)
это как раз за один день (в Dat надо именно дату задавать тогда, не дататайм, впрочем параметр тоже можно ограничить)


 
dim- ©   (2003-09-28 19:19) [2]

Спасибо, помогло, а с MSSql такое прокатит?


 
sniknik ©   (2003-09-29 08:19) [3]

такое?, нет конечно, подобное, да, алогичная операция в нем выглядит посложнее, так
Cast(Cast(koord.dat AS Int) AS DateTime) = :Dat
(хотя тут надо еще проверить откидывается дробная часть или округляется (не пользовался такой конструкцией, и уверенно сказать не могу, и проверять в лом, сам проверь))
если округляется то добавить явно отбрасывание
Cast(Round(Cast(koord.dat AS Int),0,1) AS DateTime) = :Dat



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

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



Память: 0.45 MB
Время: 0.01 c
1-65545
valerchik
2003-10-08 00:50
2003.10.20
Добавление программы в сервисы


3-65347
Woolen
2003-09-26 17:33
2003.10.20
Буферизация данных в отчете


11-65403
_Vadim
2003-02-05 14:28
2003.10.20
Значения по умолчанию


14-65584
Думкин
2003-10-02 06:36
2003.10.20
С днем рождения! 2 октября.


1-65498
Я_
2003-10-08 16:30
2003.10.20
DBGrid




   Наверх