функция dateadd

Есть необходимость выбрать все записи за последие полгода.
Создал фильтр с таким кодом :

"tbl_OfferingMovement"."Date" >= DATEADD(mm,-6,CURRENT_TIMESTAMP)

Выдает ошибку Function unknown
Где я не прав ?

Нравится

15 комментариев

Если Вы создали фильтр в сервисе selectQuery, какой тип фильтра Вы указали?

Пользовательский SQL фильтр

А какая у Вас СУБД?

Firebird 2.0

Вот нашла
http://www.firebirdsql.su/doku.php?id=dateadd
начиная с версии 2.1 эта функция доступна.

ой, спасибо
был абсолютно уверен, что использовал dateadd в 2.0 раньше :)

А почему параметром и обычным фильтром не воспользоваться.

"Underscore a.k.a. _" написал:

то есть ?
как мне получить дату CURRENT_TIMESTAMP минус полгода ?

Если Вы включаете этот фильтр из скрипта, то определяете текущую дату минус полгода средствами JScript и подставляете в параметр, а в фильтре сравниваете нужное поле с значением этого параметра.

Можно сначала вычислить JScript-ом дату и по ApplyDatasetFilter включить фильтр с этой датой. Но может вариант с функцией и лучше. При условии что FireBird правильно соптимизирует и не станет вычислять значение функции для каждой записи.
Upd: Начал писать коммент - допиши и запости :)

Я думал прямо в параметре можно вычислить. Через скрипт - слишком муторно (необходимо использовать не один раз), проще СУБД сменить :)

"Антон Забежалов" написал:Через скрипт - слишком муторно (необходимо использовать не один раз)

А функцию написать и вызывать ее потом, будет также одна строчка, как Вы бы вызывали функцию только включения фильтра.

Я бы сделал функцию ОтфильтроватьДатасетТакКакМнеНадо и в ней бы вычислял дату и накладывал фильтр по ней. Более того в функцию можно передавть параметр Период и фильтровать не только за полугодие. Хотя нафик надо скорее всего :)

"Underscore a.k.a. _" написал:Я бы сделал функцию ОтфильтроватьДатасетТакКакМнеНадо и в ней бы вычислял дату и накладывал фильтр по ней.

Я это и имела ввиду, спасибо за название функции, не могла найти подходящее, а это именно то, что нужно :twisted:

Ради Бога, пользуйтесь. У меня таких много :)

Показать все комментарии