Использование CURRENT_TIMESTAMP, арифметического оператора и параметра в Firebird
-
03-07-2019 - |
Вопрос
Почему это не работает (когда параметр установлен на 1):
SELECT * FROM TABLE WHERE TIMESTAMPFIELD > (CURRENT_TIMESTAMP - ?)
Но это работает:
SELECT * FROM TABLE WHERE TIMESTAMPFIELD > (CURRENT_TIMESTAMP - 1)
Я получаю сообщение об ошибке: "conversion error from string "39723.991882951" "
Я использую Firebird 2.1
РЕДАКТИРОВАТЬ:
Я нашел ответ сам с небольшой помощью:
SELECT * FROM TABLE WHERE TIMESTAMPFIELD > (CURRENT_TIMESTAMP - CAST(? as DECIMAL(18,9))
Работает, если параметр задан как значение с плавающей запятой.
Решение
Что именно вы хотите сделать?Возможно, я смогу быть более полезным, если рассказать подробнее.
ВЫБЕРИТЕ * ИЗ ТАБЛИЦЫ, ГДЕ TIMESTAMPFIELD > (CURRENT_TIMESTAMP - ?)
Как вы устанавливаете параметр в своем коде?Какой язык вы используете?
Если вы используете Delphi, ваш параметр должен быть передан как Float.Т.е.:
MyQuery.ParamByName('delta').asFloat := 0.1;
Попробуйте это и сообщите нам, работает ли это
ХТХ
Не связан с StackOverflow