sql - 为什么将日期转换为_char() 放在案例中时会引发 ORA-01830 错误?
问题描述
我已经使用此代码很长时间了,它工作正常:
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,它会像往常一样工作,如果我将它添加回来,错误会立即返回。
我试过写一个测试脚本,谷歌搜索,但我找不到问题。两种情况下都转换了相同的值,为什么其中一种有效而另一种抛出错误?
解决方案
当 v_cardCode = 'C1' 然后 v_date else to_char(v_emailRow.first_stamp, 'dd.mm.yyyy')
每当需要执行 to_char() 时,它总是开始抛出 ORA-01830: date format picture ends before conversion整个输入字符串错误
v_date
,正如变量名所暗示的那样,它是一种DATE
数据类型,而应用TO_CHAR
将 date 转换为STRING
. 因此,具有两种不同的数据类型会导致错误。
CASE
在您的 SQL 中尝试以下操作:
case
when v_cardCode = 'C1'
then to_char(v_date, 'dd.mm.yyyy')
else to_char(v_emailRow.first_stamp, 'dd.mm.yyyy')
end
推荐阅读
- sql-server - 找出同一个学生与不同组中有多少科目相关联
- r - 如何在 tic.R 中添加非失败的 lintr 检查
- pandas - 如何将 3 个数据帧与每个数据帧连接成顺序列
- php - 为什么 require(local_file) 或 include(local_file) 可能会失败以及如何处理?
- c# - 如何在 odata v4 代码生成器中进行动态查询
- javascript - 尝试映射一组 url 图像以使用 map 渲染到卡片
- laravel - 单击提交按钮后,Laravel 表单无法正常工作
- security - 使用 JWT 生成 API 密钥并在需要时重新生成相同的密钥
- hsqldb - 如何创建持久化 HSQL 数据库?
- sql - 如何在 Oracle SQL 中将整数除以产生浮点数?