Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];

Вниз

Арифметические операции с датами в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
14-69568
_cooler
2002-11-04 14:45
2002.11.21
Помогите мастера!


14-69528
zzet
2002-11-02 20:27
2002.11.21
пиво


7-69590
Донской
2002-09-22 15:21
2002.11.21
Путь к исполняемому файлу сервиса


4-69635
Dimk
2002-10-11 14:25
2002.11.21
Что находится в стеке и регистрах когда управление передается


1-69307
Gari
2002-11-12 09:22
2002.11.21
ActiveX компонент.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский