Sql 为什么将日期转换为_char()会在放入案例中时引发ORA-01830错误?
我已经使用这段代码很长时间了,它工作得很好:Sql 为什么将日期转换为_char()会在放入案例中时引发ORA-01830错误?,sql,oracle,date,datetime,plsql,Sql,Oracle,Date,Datetime,Plsql,我已经使用这段代码很长时间了,它工作得很好: to_char(v_emailRow.first_stamp,'dd.mm.yyyy') 但是,今天我需要添加以下条件 当v_cardCode='C1'然后v_date else to_char(v_emailRow.first_stamp,'dd.mm.yyyy')结束时的情况 当我添加case-then语句时,每当需要执行to_char()时,它总是在转换整个输入字符串之前抛出ORA-01830:date format picture end。如
to_char(v_emailRow.first_stamp,'dd.mm.yyyy')
但是,今天我需要添加以下条件当v_cardCode='C1'然后v_date else to_char(v_emailRow.first_stamp,'dd.mm.yyyy')结束时的情况
当我添加case-then语句时,每当需要执行to_char()时,它总是在转换整个输入字符串之前抛出ORA-01830:date format picture end。如果我删除了case,它会像往常一样工作,如果我重新添加它,错误会立即返回
我试过写一个测试脚本,谷歌搜索,但我找不到问题。在这两种情况下转换相同的值,为什么其中一个有效,而另一个抛出错误
当v_cardCode='C1'时,则v_date else to_char(v_emailRow.first_stamp,'dd.mm.yyyy')
每当需要执行to_char()时,它总是在转换整个输入字符串错误之前抛出ORA-01830:date格式的图片结尾
v_date
,变量名表明它是date
数据类型,而将应用于\u CHAR
则将日期转换为字符串
。因此,使用两种不同的数据类型会导致错误
请在您的SQL中尝试以下CASE
:
case
when v_cardCode = 'C1'
then to_char(v_date, 'dd.mm.yyyy')
else to_char(v_emailRow.first_stamp, 'dd.mm.yyyy')
end
我们需要表的DDL以及一些样本数据来复制错误。但要猜测一下,我怀疑v_date可能是一个日期变量。因此,您的案例将尝试返回日期数据类型和字符数据类型的混合,这将导致问题。在v_date上尝试使用TO_字符?@Stilgar您是对的,v_date是一个日期变量。很可能这就是问题所在,我没想到。提前谢谢。