Trunc с датой

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
SerjP
Сообщения: 24
Зарегистрирован: 09 июл 2008, 15:01

Trunc с датой

Сообщение 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

Re: Trunc с датой

Сообщение WildSery » 14 ноя 2008, 13:59

Даже BY DESCRIPTOR ты всё равно передаёшь вполне определённый тип, а не "нечто".
Без парсера тут не обойтись.
Кстати, в Оракле работает cast("DateTime" as Date) ? Если да, то я б посоветовал сразу формулу формировать с такой функцией, а не с Trunc.

SerjP
Сообщения: 24
Зарегистрирован: 09 июл 2008, 15:01

Re: Trunc с датой

Сообщение 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 раза.

armagedon2007
Сообщения: 44
Зарегистрирован: 14 мар 2008, 21:01

Re: Trunc с датой

Сообщение armagedon2007 » 14 ноя 2008, 14:41

Если в Oracle есть EXTRACT то тебе это поможет.

Ответить