Есть необходимость выбрать все записи за последие полгода.
Создал фильтр с таким кодом :
Выдает ошибку Function unknown
Где я не прав ?
Нравится
Если Вы создали фильтр в сервисе selectQuery, какой тип фильтра Вы указали?
Вот нашла
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: