Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.21;
Скачать: CL | DM;

Вниз

Арифметические операции с датами в Interbase   Найти похожие ветки 

 
Sergei Ivanov   (2002-10-31 14:21) [0]

Столкнулся с граблями.

Программа использует компонент IBQuery (Delphi 5) для получения данных из БД (InterBase 5). Запрос выглядит сведущим образом (параметр DateStat = 30.08.2002 (тип Date))

Select сount(StaffId) from Staff
where (s.EndDate - :DateStat) > 180


Возвращается ошибка: SQL error code = -303
conversion error from string "30-AUG-2002"

При этом запросы следующего вида отрабатывают нормально.

Select сount(StaffId) from Staff
where s.EndDate = :DateStat


Select сount(StaffId) from Staff
where (s.EndDate - "30-AUG-2002") > 180


Так же пробовал задавать параметр DateStat = "30-AUG-2002" (тип String) происходит тоже самое, т.е возвращается ошибка -303.

При использование CAST происходит следующее:

Select сount(StaffId) from Staff
where (s.EndDate - Cast( :DateStat As Date)) > 180


Возвращается ошибка:SQL error code = -804
Data type unknown

Не зависимо от того, как я задаю параметр String-ом или Date.

Может, кто сталкивался с такой проблемой. Дело в том, что без параметра DateStat обойтись нельзя.


 
Alexandr ©   (2002-10-31 14:25) [1]

сдается, мне запрос у тебя неправдоподобный...
откуда s.endDate? таблицы такой у тебя в запросе нету.

Что - то вы скрываете, сударь.


 
Johnmen ©   (2002-10-31 14:32) [2]

Интересно, а что будет результатом выражения
"Sergei Ivanov"-"Ivanov" ? (Это намек...:))
И что тобою ожидается от s.EndDate - :DateStat ?



 
Sergei Ivanov   (2002-10-31 15:11) [3]

Да прошу прощения за опечтку

Select сount(StaffId) from Staff S
where (s.EndDate - :DateStat) > 180

s это алиас для таблицы Staff, а s.endDate - это поле типа дата из таблицы Staff

Для справки: (s.EndDate - "30-AUG-2002") данное выражение возвращает количество дней между двумя датами.





 
Johnmen ©   (2002-10-31 15:26) [4]

>Sergei Ivanov (31.10.02 15:11)
>Для справки: (

Откуда взята такая интересная справка ?


 
Wolf226 ©   (2002-10-31 15:26) [5]

Да не в дате тут дело!
Просто непозволяется с параметрами арифметические операции производить.
По пробуй тоже с вещественными числами - та же ошибка.

Генерируй SQL вручную, без параметров.

IBQuery1.sql.text:="select s.enddate-"+DateToStr( ... и.т.д


 
Johnmen ©   (2002-10-31 15:39) [6]

>Sergei Ivanov

Да, виноват... Действительно возвращает...:)


 
Johnmen ©   (2002-10-31 15:46) [7]

Тогда все просто :
where (s.EndDate - 180)>:DateStat



 
Sergei Ivanov   (2002-10-31 15:53) [8]

> Johnmen
Спасибо!



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

Текущий архив: 2002.11.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-69379
Explorer
2002-11-10 13:03
2002.11.21
Игра


3-69175
jack128
2002-10-30 20:32
2002.11.21
День добрый С каким ключом надо запустить Firebird


1-69362
[NEW]Splinter
2002-11-10 10:40
2002.11.21
Как записать в exe-шник?


1-69248
iguana
2002-11-11 19:31
2002.11.21
Sender...


7-69611
Зяблик
2002-09-20 13:26
2002.11.21
Кривые русские буквы в delphi6 под XP