ORA-01861:文字与格式字符串不匹配

时间:2016-12-22 11:51:02

标签: sql oracle date

我正在尝试格式化一个看起来像的字符:22122016,到2016年12月22日。

我已经使用过:

SELECT TO_DATE('22122016','NLS_DATE_FORMAT = DD/MM/YYYY') FROM DUAL; 

但是我的日期格式无法识别,并且我没有权利使用我想要的格式设置NLS_DATE_FORMAT。

我也试过了:

to_char(to_date(22122016),'DD/MM/YYYY') 

但我得到了ORA-01861:文字与格式字符串不匹配

3 个答案:

答案 0 :(得分:4)

作为TO_DATE中的第二个参数,您需要指定作为第一个参数传递的数据格式,所以请尝试:

SELECT TO_DATE('22122016','DDMMYYYY') FROM DUAL; 

Here您会找到允许格式的说明和here to_date函数的某些文档。

答案 1 :(得分:1)

如果你想要的只是日期文字,这是ANSI / ISO方式 -

select date '2016-12-22' from dual

答案 2 :(得分:0)

  

我正在尝试格式化一个看起来像22222016到22/12/2016的字符

ORA-01861: literal does not match format string

之所以会发生这种情况,是因为您试图输入带有格式字符串的文字,但是格式字符串的长度与文字的长度不同。

您可以通过执行以下更改来克服此问题。

TO_DATE('22122016','DD/MM/YYYY')

这将产生: 2016/12/22

  

通常,如果您使用的是TO_DATE函数,则TO_TIMESTAMP   函数,TO_CHAR函数和类似函数,请确保   您提供的文字与您所拥有的格式字符串匹配   指定