oracle ora-01858在应该是数字的地方找到了非数字字符

gmxoilav  于 2022-11-03  发布在  Oracle
关注(0)|答案(1)|浏览(246)
select *
from   cron_log_razorpay
where   trunc(To_Date(Crtd_Dt, 'DD-MM-YYYY HH24:MI:SS')) = trunc(sysdate)
order by crtd_dt desc;

crtd_dt的数据类型为varchar(100),如果错误,请修复输入数据或日期格式模型

vfwfrxfs

vfwfrxfs1#

请修正数据表,让您将日期储存为日期。

ALTER TABLE cron_log_razorpay ADD Crtd_Dt2 DATE;

UPDATE cron_log_razorpay
SET Crtd_Dt2 = TO_DATE(
                 Crtd_Dt DEFAULT NULL ON CONVERSION ERROR,
                 'DD-MM-YYYY HH24:MI:SS'
               )
WHERE Crtd_Dt2 IS NULL;

然后查看失败的列:

SELECT *
FROM   cron_log_razorpay
WHERE  Crtd_Dt2 IS NULL;

如果需要,修复Crtd_dt中的字符串并重新运行UPDATE
然后,您可以替换Crtd_Dt列:

ALTER TABLE cron_log_razorpay DROP COLUMN Crtd_Dt;
ALTER TABLE cron_log_razorpay RENAME COLUMN Crtd_Dt2 TO Crtd_Dt;

然后,所有的值都将是有效的日期(或者,如果您尚未修复数据,则为NULL值)。
fiddle

相关问题