Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
SerjP
- Сообщения: 24
- Зарегистрирован: 09 июл 2008, 15:01
Сообщение
SerjP » 14 ноя 2008, 10:38
Вводная - есть основной проект на Oracle, там в конструкторе пишутся различные расчетные формулы(в них используются функции - как стандартные так и свои). Мой "подпроект" на FB 2.1(3й диалект) - необходимо реализовать возможность расчета по "тем формулам" (через execute statement)- . В общем реализация удалась

Но тут столкнулся с такой проблемой - в Oracle Trunc работает и с датой, в FB нет.
Первая мысль - написать UDF - но возник вопрос - как передовать/возвращать параметры - может быть число, а может дата. Что BY DESCRIPTOR? Вторая мысль - дополнительно "парсить" формулу и если trunc("DateTime") менять на cast("DateTime" as date)
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 14 ноя 2008, 13:59
Даже BY DESCRIPTOR ты всё равно передаёшь вполне определённый тип, а не "нечто".
Без парсера тут не обойтись.
Кстати, в Оракле работает cast("DateTime" as Date) ? Если да, то я б посоветовал сразу формулу формировать с такой функцией, а не с Trunc.
-
SerjP
- Сообщения: 24
- Зарегистрирован: 09 июл 2008, 15:01
Сообщение
SerjP » 14 ноя 2008, 14:19
На тему By BESCRIPTOR понятно было, что не пройдет - но всегда хочется надеятся на чудо

На Oracle cast("DateTime" as Date) - возвращает + hh/mm/ss, a trunc-ом они отрубают время....
и не только - говорят могут и до месяца округлить
trunc("DateTime", 'month')
Последний раз редактировалось
SerjP 14 ноя 2008, 14:53, всего редактировалось 2 раза.