ORACLE中的TO_CHAR是否可以(TO_CHAR(04-28-2017,'yyyy'))INSTEAD OF将列名传递为TO_CHAR(sysdate,'yyyy / mm / dd')

时间:2017-04-28 04:30:04

标签: sql oracle plsql

通常,我们将列名称作为TO_CHAR(sysdate, 'yyyy/mm/dd')传递给TO_CHAR CLause。

我想知道我们是否可以在列名称的位置传递日期(TO_CHAR(04-28-2017, 'yyyy'))

1 个答案:

答案 0 :(得分:1)

不,你不能因为TO_CHAR函数需要数字或日期/时间值作为参数。这可以很容易地测试。

SQL> select to_char('12-04-2017','DD-MM-YYYY') from dual;
select to_char('12-04-2017','DD-MM-YYYY') from dual
               *
ERROR at line 1:
ORA-01722: invalid number

您需要将字符串转换为日期。

SQL> select to_char(to_date('12-04-2017','DD-MM-YYYY'),'YYYY') from dual;

TO_C
----
2017

OR

SQL> select to_char(date '2017-04-12','YYYY') from dual;

TO_C
----
2017