一个sql小问题

就是 

select b.account_name ,

       case when b.time=concat(to_char(sysdate,'yyyy'),'-03-31' 

         then  b.bond_value_invest_a2 end as 债券_H2 ,

       case when b.time=concat(to_char(sysdate,'yyyy'),'-06-30' 

         then  b.bond_value_invest_a2 end as 债券_H2 

           from A

提示ora-01861 说是数据类型不匹配,日期那块我应该咋改啊

lincoder 发布于 2020-7-1 17:16
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
qhlLv6中级互助
发布于2020-7-1 17:17(编辑于 2020-7-1 17:35)

这个b.time应该是日期类型,等号后面是字符串类型,所以不匹配

select b.account_name ,
	case when to_char(b.time,'yyyy-mm-dd')=to_char(sysdate,'yyyy')||'-03-31' then  b.bond_value_invest_a2 end as 债券_H2 ,
	case when to_char(b.time,'yyyy-mm-dd')=to_char(sysdate,'yyyy')||'-06-30' then  b.bond_value_invest_a2 end as 债券_H2 
from A b


最佳回答
0
snrtuemcLv8专家互助
发布于2020-7-1 17:18(编辑于 2020-7-1 17:22)

你这两个地方少了个),

select b.account_name ,

       case when b.time=to_date(concat(to_char(sysdate,'yyyy'),'-03-31' ),'yyyy-mm-dd')

         then  b.bond_value_invest_a2 end as 债券_H2 ,

       case when b.time=to_date(concat(to_char(sysdate,'yyyy'),'-06-30' ),'yyyy-mm-dd')

         then  b.bond_value_invest_a2 end as 债券_H2 

           from A

image.png

  • lincoder lincoder(提问者) 括号加上了,是要在前面加个to_char么?
    2020-07-01 17:25 
  • snrtuemc snrtuemc 回复 lincoder(提问者) 看修改答案,我把后面转成日期格式了
    2020-07-01 17:28 
  • 3关注人数
  • 458浏览人数
  • 最后回答于:2020-7-1 17:35
    请选择关闭问题的原因
    确定 取消
    返回顶部