我们使用第三方软件使用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
但这样做会给我这个错误信息:
从“十进制”到“日期时间”的无效演员表。无法在DATEDIFF列中存储<35>。 预期类型是DateTime。
我该如何解决?
笔记:
TRUNC
不起作用所以我基本上只是铸造到VARCHAR
基本上删除时间部分并将其投回到DATE
字段。CURRENT_DATE
相当于DevExpress世界中的SYSDATE
。看起来最简单的解决方案是将结果转换为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