Использование CURRENT_TIMESTAMP, арифметического оператора и параметра в Firebird

StackOverflow https://stackoverflow.com/questions/164516

  •  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;

Попробуйте это и сообщите нам, работает ли это

ХТХ

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top