Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
oracle中的nvarchar到日期转换不正确_Oracle_Date Conversion_To Date - Fatal编程技术网

oracle中的nvarchar到日期转换不正确

oracle中的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') 无论何时使用两位

我试图将数据类型为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')
无论何时使用两位数的年份,您都有两个可用选项,如下所示:

to_date(EFCTV_DT,'dd-mon-rr')
  • rr
    -将年份设置为
    xx50-当前年份\u year-xx49
  • yy
    -将年份设置为
    xx00-当前年份\u year-xx99
因此,当前年份是2020年,如果您将95作为年份,那么您将得到以下结果:

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')