Вычисление разницы в датах из DevExpress - PullRequest
0 голосов
/ 03 апреля 2019

Мы используем стороннее программное обеспечение, которое использует DevExpress для создания отчетов.Обычно в Oracle - я легко получаю разницу в датах, просто вычитая их:

TRUNC(sysdate) - TRUNC(a.birth_date) AS datediff

Я использовал ту же логику из DevExpress:

CAST(CAST(CURRENT_DATE AS VARCHAR(9)) AS DATE) - CAST(CAST(a.birth_date AS VARCHAR(9)) AS DATE) AS datediff

Но это дает мнеэто сообщение об ошибке:

Недопустимое приведение от 'Десятичная' к 'Дата / время'.Не удалось сохранить <35> в столбце DATEDIFF.
Ожидаемый тип: DateTime.

Как это исправить?


Примечания:

  • Здесь происходит много кастований, но это просто обходной путь, потому что TRUNC не работает, поэтому я в основном просто кастую в VARCHAR, существенно удаляя часть времении приведение его обратно к полю DATE.
  • CURRENT_DATE эквивалентно SYSDATE в мире DevExpress.

1 Ответ

0 голосов
/ 03 апреля 2019

Похоже, самое простое решение - привести результат к decimal.

CAST(CAST(CAST(CURRENT_DATE AS VARCHAR(9)) AS DATE) - CAST(CAST(a.birth_date AS VARCHAR(9)) AS DATE) AS DECIMAL) AS datediff
...