我正在尝试格式化一个看起来像的字符: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:文字与格式字符串不匹配
答案 0 :(得分:4)
作为TO_DATE
中的第二个参数,您需要指定作为第一个参数传递的数据格式,所以请尝试:
SELECT TO_DATE('22122016','DDMMYYYY') FROM DUAL;
答案 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函数和类似函数,请确保 您提供的文字与您所拥有的格式字符串匹配 指定