转换时出错
select to_date('Sep 26 00:15:00','DD/MM/YYYY HH24:MI:SS') from dual ;
ORA-01841: (full) year must be between -4713 and +9999, and not be 0 .
寻找解决方案
答案 0 :(得分:1)
如何?当然,通过提供正确的格式掩码。
SQL> select
2 to_char(
3 to_date('Sep 26 00:15:00 2020', 'Mon dd hh24:mi:ss yyyy'),
4 'yyyy/mm/dd hh24:mi:ss'
5 ) result
6 from dual;
RESULT
-------------------
2020/09/26 00:15:00
SQL>
答案 1 :(得分:0)
使用TO_DATE()
,您想要将字符串-'Sep 26 00:15:00'
转换为Oracle DATE
类型-该类型在内部计算从开始日期起的秒数。
在Unix中,这将是“ 1970-01-01 00:00:00”,在其他一些数据库中,我知道是“ 2000-01-01 00:00:00”。我不了解Oracle。
因此,您将转换字符串:'Sep 26 00:15:00'
。即:三个字母的英文月份名称缩写,一个空格,一个两位数的日期,一个空格,两位数字(表示24小时的小时数),冒号,两位代表分钟,另一个冒号以及两位代表第二。准确地说,这一年什么都没有。 TO_DATE()
的第二个参数必须描述该格式。因此它将是:'Mon DD HH24:MI:SS'
。
在这种情况下,您使用的第二个参数绝对没有意义。如果要播放,可以使用DATE
将其重新格式化为转换后的TO_CHAR()
类型,并重新格式化为ISO格式的字符串:
SELECT
TO_CHAR(
TO_DATE('Sep 26 00:15:00','Mon DD HH24:MI:SS')
, 'YYYY-MM-DD HH24:MI:SS'
)
FROM dual;