Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么将日期转换为_char()会在放入案例中时引发ORA-01830错误?_Sql_Oracle_Date_Datetime_Plsql - Fatal编程技术网

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是一个日期变量。很可能这就是问题所在,我没想到。提前谢谢。