如何转换日期:2020年9月26日 00:15:00 在 YYYY/MM/DD HH24:MI:SS' 格式在 Oracle SQL 中



转换时出错

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 .

寻找解决方案

如何?当然,通过提供正确格式的掩码。

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>

使用TO_DATE(),您希望将字符串'Sep 26 00:15:00'转换为OracleDATE类型,该类型在内部计算自epoch日期以来的秒数。

在Unix中,这将是"1970-01-01 00:00:00",在我所知道的其他一些数据库中,这是"2000-01-01 00:00:00"。我不知道甲骨文。

因此,您转换字符串:'Sep 26 00:15:00'。也就是说:三个字母的英文月名缩写,一个空格,两位数字的日期,一个空间,两位表示24小时的小时,一个冒号,两位代表分钟,另一个冒号和两位代表秒。准确地说,今年什么都没有。TO_DATE()的第二个参数必须描述该格式。因此它将是:'Mon DD HH24:MI:SS'

您使用的第二个参数在这种情况下完全没有意义。如果您想播放,可以使用TO_CHAR():将转换后的DATE类型重新格式化为ISO格式的字符串

SELECT 
TO_CHAR(
TO_DATE('Sep 26 00:15:00','Mon DD HH24:MI:SS')
, 'YYYY-MM-DD HH24:MI:SS'
)
FROM dual;

相关内容

最新更新