Мы используем стороннее программное обеспечение, которое использует 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.