oracle to date 01841,to_date 和trim的ORA-01841问题

本文探讨了在SQL查询中遇到的ORACLE错误ORA-01841,焦点在于日期格式转换问题。通过实例,作者展示了如何通过trim()函数修复`to_date()`函数导致的问题,并优化了查询条件,确保正确处理日期范围筛选。
摘要由CSDN通过智能技术生成

select t.*

from (select tt.strapprovedocunid,

tt.strcurapprover,

tt.strsubject,

tt.strflowname,

tt.strcurnodename,

to_date(tc.strpreactiontime,

'yyyy-MM-dd hh24:mi:ss') dtpreactiontime

from tbtodo  tt,

context tc

where tt.strcurnodename not like

'拟稿人%'

and tt.strnodeposition <> '结束'

and tt.strapprovedocunid =

tc.strapprovedocunid

and tc.strpreactiontime is not null

and tc.strpreactiontime <> ' ') t

where t.dtpreactiontime >=cast(TO_DATE('2010-01-01 00:00:00',

'YYYY-MM-DD HH24:MI:SS') as

timestamp)

and t.dtpreactiontime

'YYYY-MM-DD HH24:MI:SS') as

timestamp)

and sysdate -

t.dtpreactiontime >= 1

下面这部分执行没问题

select t.*

from (select tt.strapprovedocunid,

tt.strcurapprover,

tt.strsubject,

tt.strflowname,

tt.strcurnodename,

to_date(tc.strpreactiontime,

'yyyy-MM-dd hh24:mi:ss') dtpreactiontime

from tbtodo  tt,

context tc

where tt.strcurnodename not like

'拟稿人%'

and tt.strnodeposition <> '结束'

and tt.strapprovedocunid =

tc.strapprovedocunid

and tc.strpreactiontime is not null

and tc.strpreactiontime <> ' ') t

加了where后面的任意一个条件 也报 ORA-01841:完整的年份值必须介于-4713和+9999之间且不为0

把to_date(tc.strpreactiontime,

'yyyy-MM-dd hh24:mi:ss') dtpreactiontime

改成

to_date(trim(tc.strpreactiontime),

'yyyy-MM-dd hh24:mi:ss') dtpreactiontime 又可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值