【问题标题】:Oracle SQL to_date & to_timestamp ORA-01858: a non-numeric character was found where a numeric was expected & ORA-01850: hour must be between 0 and 23Oracle SQL to_date & to_timestamp ORA-01858: 在需要数字的地方发现了一个非数字字符 & ORA-01850: 小时必须在 0 到 23 之间
【发布时间】:2014-12-11 14:45:25
【问题描述】:

我有一小段代码:

代码

SELECT to_date(it.DSTAMP, 'DD/MM/YYYY') AS "Date", to_timestamp(it.DSTAMP, 'HH24:MI:SS') AS Time
FROM itable it

错误

ORA-01858:在需要数字的地方发现了一个非数字字符 01858. 00000 - “在需要数字的地方发现了一个非数字字符” *原因:要使用日期格式模型转换的输入数据是 不正确。输入数据不包含数字 格式模型所要求的。 *行动:修复输入数据或日期格式模型,以确保 元素在数量和类型上匹配。然后重试操作。

如果我删除 to_date会出错

ORA-01850:小时必须在 0 到 23 之间 01850. 00000 - “小时必须在 0 到 23 之间” *原因:
*行动:

DSTAMP 字段返回 24-SEP-14 08.55.33.997545000,不带任何格式。

显然预期的输出是

24/09/2014 & 08:55:34

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper to-date to-timestamp


    【解决方案1】:

    看来it.DSTAMP是一个TIMESTAMP

    to_dateto_timestamp 替换为to_char

    SELECT to_char(it.DSTAMP, 'DD/MM/YYYY') AS "Date", to_char(it.DSTAMP, 'HH24:MI:SS') AS Time
    FROM itable it
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多