为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:
【CPU】:
【问题描述】*下面sql为啥报错,birthday是varchar类型,此sql计算年龄的
SELECT
EXTRACT(YEAR FROM (
CURRENT_DATE - COALESCE(TO_DATE(CASE WHEN t.BIRTHDAY = '' THEN NULL ELSE t.BIRTHDAY END, 'YYYY-MM-DD'), CURRENT_DATE)
)) AS age
FROM
PERSON t;
两个日期相减的结果是相隔天数,所以在EXTRACT时会报错
你可以试着用 YEARS_BETWEEN,看看是否能够满足需要
类似于
SELECT YEARS_BETWEEN (CURRENT_DATE ,COALESCE(TO_DATE(CASE WHEN t.BIRTHDAY = '' THEN NULL ELSE t.BIRTHDAY END, 'YYYY-MM-DD'), CURRENT_DATE) ) AS age FROM PERSON t;