日期从DD-MM-YYYY转换为yyyymm

时间:2014-11-05 06:57:16

标签: sql oracle11g

以下是我试过的查询,但我收到错误。请纠正我。

从双重选择to_char(to_date(01-03-2018,' DD-MM-YYYY'),' yyyymm');

获得以下异常

ORA-01847: day of month must be between 1 and last day of month
01847. 00000 -  "day of month must be between 1 and last day of month"

2 个答案:

答案 0 :(得分:3)

select to_char(to_date('01-03-2018', 'DD-MM-YYYY'), 'yyyymm') from dual;

TO_DATE函数的第一个参数应该来自char组,因此您需要使用引号。

答案 1 :(得分:2)

你错过了约会的报价。这就是Oracle对待的原因 01-03-2018作为一个数字,并将其评估为1-3-2018 = -2020,然后尝试将-2020视为当前月份的日期编号,因为没有其他日期元素出现。 oracle在你后面执行的真实查询是:

select to_char(to_date(to_char(1-3-2018), 'DD-MM-YYYY'), 'yyyymm') from dual;

正确的查询是

select to_char(to_date('01-03-2018', 'DD-MM-YYYY'), 'yyyymm') from dual;

感谢@Alex Poole更正了这个解释。