【发布时间】:2020-08-21 18:59:29
【问题描述】:
这段代码我用了很久了,效果很好:to_char(v_emailRow.first_stamp, 'dd.mm.yyyy')
但是,今天我需要添加以下条件case when v_cardCode = 'C1' then v_date else to_char(v_emailRow.first_stamp, 'dd.mm.yyyy') end。
只要我添加了 case-then 语句,每当需要执行 to_char() 时,它就会开始总是抛出 ORA-01830: date format picture ends before converting entire input string 错误。如果我删除 case-then,它会像往常一样工作,如果我将它添加回来,错误会立即返回。
我已经尝试编写测试脚本,谷歌搜索,但我找不到问题。两种情况下都转换了相同的值,为什么其中一种有效而另一种抛出错误?
【问题讨论】:
-
我们需要您的表的 DDL 以及一些示例数据才能复制错误。但要猜测这一点,我怀疑 v_date 可能是一个日期变量。因此,您的 CASE 将尝试返回 DATE 数据类型和 CHAR 数据类型的混合,这会导致问题。尝试在 v_date 上使用 TO_CHAR?
-
@Stilgar 你是对的,v_date 是一个日期变量。很可能是这个问题,没想到。提前致谢。
标签: sql oracle date datetime plsql