realloc
可以按以下方式转换,但是如何转换星期六
Sep 26 00:15:00 2020
ORA-01843:无效月份
答案 0 :(得分:2)
数据库的语言无法识别“ 9月”(9月)。
我的语言是克罗地亚语,因此该查询对我也不起作用:
SQL> SELECT TO_CHAR( TO_DATE('Sep 26 00:15:00','Mon DD HH24:MI:SS') , 'YYYY-MM-DD HH24:MI:SS' ) FROM dual;
SELECT TO_CHAR( TO_DATE('Sep 26 00:15:00','Mon DD HH24:MI:SS') , 'YYYY-MM-DD HH24:MI:SS' ) FROM dual
*
ERROR at line 1:
ORA-01843: not a valid month
一种选择是更改会话并将语言设置为英语:
SQL> alter session set nls_date_language = 'english';
Session altered.
SQL> SELECT TO_CHAR( TO_DATE('Sep 26 00:15:00','Mon DD HH24:MI:SS') , 'YYYY-MM-DD HH24:MI:SS' ) FROM dual;
TO_CHAR(TO_DATE('SE
-------------------
2020-09-26 00:15:00
SQL>
另一种选择是将该信息包含在TO_DATE
函数中:
SQL> SELECT TO_CHAR( TO_DATE('Sep 26 00:15:00','Mon DD HH24:MI:SS', 'nls_date_language = english') , 'YYYY-MM-DD HH24:MI:SS' ) FROM dual;
TO_CHAR(TO_DATE('SE
-------------------
2020-09-26 00:15:00
SQL>
如果要在结果中包含日期名称,请使用适当的格式掩码,例如
SQL> SELECT TO_CHAR( TO_DATE('Sep 26 00:15:00','Mon DD HH24:MI:SS') , 'Day, YYYY-MM-DD HH24:MI:SS' ) FROM dual;
TO_CHAR(TO_DATE('SEP2600:15:00','MONDDHH24:MI:SS'),'DAY,Y
---------------------------------------------------------
Saturday , 2020-09-26 00:15:00
SQL>
由于您坚持使用Sat
(“星期六”),并且由于某种原因-不想自己检查有效的格式遮罩,然后
SQL> SELECT TO_CHAR( TO_DATE('Sep 26 00:15:00','Mon DD HH24:MI:SS') , 'Dy, YYYY-MM-DD HH24:MI:SS' ) FROM dual;
TO_CHAR(TO_DATE('SEP2600:15:00','
---------------------------------
Sat, 2020-09-26 00:15:00
SQL>
答案 1 :(得分:1)
使用Dy
格式模型:
SELECT TO_CHAR(
TO_DATE(
'Sat Sep 26 00:15:00',
'Dy Mon DD HH24:MI:SS',
'NLS_DATE_LANGUAGE = English'
),
'YYYY-MM-DD HH24:MI:SS'
) AS formatted_date
FROM DUAL;
哪个输出:
| FORMATTED_DATE | | :------------------ | | 2020-09-26 00:15:00 |
db <>提琴here