oracle中的nvarchar到日期转换不正确
我试图将数据类型为nvarchar的数据插入到数据类型为date的列中,oracle的转换错误。我试过两种方法,但都不起作用。请提出一个替代方案。我正在使用oracle 12cc 源列的值格式为31-DEC-99,但当我使用to_date对其进行转换时,该值变为0099-12-31oracle中的nvarchar到日期转换不正确,oracle,date-conversion,to-date,Oracle,Date Conversion,To Date,我试图将数据类型为nvarchar的数据插入到数据类型为date的列中,oracle的转换错误。我试过两种方法,但都不起作用。请提出一个替代方案。我正在使用oracle 12cc 源列的值格式为31-DEC-99,但当我使用to_date对其进行转换时,该值变为0099-12-31 select to_date(EFCTV_DT,'yyyy-mm-dd') from table1; 您需要使用正确的格式,如下所示: to_date(EFCTV_DT,'dd-mon-rr') 无论何时使用两位
select to_date(EFCTV_DT,'yyyy-mm-dd') from table1;
您需要使用正确的格式,如下所示:
to_date(EFCTV_DT,'dd-mon-rr')
无论何时使用两位数的年份,您都有两个可用选项,如下所示:
to_date(EFCTV_DT,'dd-mon-rr')
-将年份设置为rr
xx50-当前年份\u year-xx49
-将年份设置为yy
xx00-当前年份\u year-xx99
rr - 1995
yy - 2095
请向我们展示如何将该字符串插入日期列。为了确保
to_date()
可以创建具有4位年份的日期对象,据我所知,源必须具有4位年份。如果我尝试从varchar'51-01-01'
创建一个日期对象,并使用模式'yyyy-mm-dd'
它将导致'0051-01-01'
另外,如果你处理20世纪的日期,我强烈建议使用4位数的年份,以避免Y2K现象的副作用。你到底为什么要存储DATE
值作为字符串-甚至nvarchar
?为了独立于当前用户会话NLS\u DATE\u LANGUAGE
设置,您应该更喜欢而不是日期(EFCTV\u DT,'dd-mon-rr',NLS\u DATE\u LANGUAGE=American')