Текущий архив: 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.46 MB
Время: 0.008 c