【发布时间】:2015-03-11 22:32:00
【问题描述】:
我有一个名为 program_start_date 的字段,其格式为YYYYMM。我需要确定此日期是否在 5 年前或更早,如果它出现在 5 年前以上,或者它是否为空白。
我的 SQL 查询中有以下 case 语句:
CASE
WHEN floor(MONTHS_BETWEEN(sysdate, program_start_date)/12) <= 5 THEN '5 years or less'
WHEN floor(MONTHS_BETWEEN(sysdate, program_start_date)/12) > 5 THEN '6+ years'
WHEN program_start_date is null THEN 'Blank'
ELSE program_start_date
END
我收到以下错误消息:
ORA-01861:文字与格式字符串 01861 不匹配。00000 - “文字与格式字符串不匹配”
*原因:输入中的文字必须与格式字符串中的文字长度相同(前导空格除外)。如果 “FX”修饰符已打开,文字必须完全匹配, 没有额外的空格。
*操作:更正格式字符串以匹配文字。
我尝试在前两种情况下插入 to_date(),但仍然收到相同的错误消息。我该如何解决这个问题?
【问题讨论】:
-
您能否与
to_date通话分享失败的表达式? -
我试过了,但没用: WHEN floor(MONTHS_BETWEEN(sysdate, to_date(program_start_date))/12) 5 THEN '6+ years'
标签: sql oracle select date-formatting