Oracle导入CSV日期格式异常问题求助及解决
问题描述
- 待处理CSV包含2015-2022年的5分钟间隔日期,原始格式为
09-01-2015 09:15:00+05:30 - 用Notepad++批量移除
+05:30后,日期格式变为DD-MM-YYYY HH:MI:SS - 将CSV导入Oracle表时,Excel、SQL Developer预览格式正常,但导入后日期显示异常(示例:
20-01-09 3:14:30.000000000 PM),查询年份返回0031 - 尝试过
DATE和TIMESTAMP两种列类型,查看NLS会话参数发现默认日期格式为DD-MM-RR,无法定位问题根源
问题原因
Oracle默认依赖NLS会话参数(如NLS_DATE_FORMAT=DD-MM-RR)解析日期字符串,当输入的DD-MM-YYYY HH:MI:SS格式与默认的RR年份格式不匹配时,Oracle会尝试模糊解析,导致日期的日、月、年部分被错误映射,最终出现年份错乱的异常。
解决方法
在Oracle导入向导中,为日期列明确指定严格匹配的格式模板:
FXDD-MM-YYYY HH24:MI
FX表示严格格式匹配,禁止Oracle自动调整解析规则HH24确保24小时制时间被正确解析,避免AM/PM混淆
内容的提问来源于stack exchange,提问作者user21575280
相关产品推荐
相关产品推荐

