插入时将YYYY-MM-DD HH24:MI:SS.F转换为oracle日期格式

时间:2018-03-17 20:34:12

标签: sql oracle oracle11g

我们将日期存储为VARCHAR2在我们的数据库表

  • REGDATE - VARCHAR2,格式YYYY-MM-DD hh24:mi:ss.f

示例数据:

2018-01-31 23:47:35.0
2018-01-01 00:00:48.0
2018-01-01 06:54:36.0

我尝试将此数据插入到具有正确TABLEB格式的新表DATE中。我尝试了一些像以下一样的解决方案,我通常得到ORA-01821: date format not recognized

SELECT 
    TO_DATE(REGDATE, 'YYYY-MM-DD HH24:MI:SS.F') 
FROM 
    TABLEA 
WHERE 
    REGDATE LIKE '2018-03-16%'

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

要使用小数秒,您需要转换为timestamp,所以:

SELECT TO_TIMESTAMP(REGDATE,'YYYY-MM-DD HH24:MI:SS.FF')
FROM TABLEA
WHERE REGDATE LIKE '2018-03-16%';

如果您需要date,请事后转换:

SELECT CAST(TO_TIMESTAMP(REGDATE,'YYYY-MM-DD HH24:MI:SS.FF') as DATE)
FROM TABLEA
WHERE REGDATE LIKE '2018-03-16%';

答案 1 :(得分:2)

<强>更新

你是对的,Oracle不支持使用DATE格式的小数秒。这也写在原始答案的链接网站上... oops。

  

以下日期时间格式元素可用于时间戳和间隔格式模型,但不能用于原始DATE格式模型:FF,TZD,TZH,TZM和TZR。

这应该可行:

SELECT CAST(TO_TIMESTAMP(REGDATE,'YYYY-MM-DD HH24:MI:SS.FF1') AS DATE) FROM TABLEA WHERE REGDATE LIKE '2018-03-16%'

原始回答

尝试使用

SELECT TO_DATE(REGDATE,'YYYY-MM-DD HH24:MI:SS.FF1') FROM TABLEA WHERE REGDATE LIKE '2018-03-16%'

在表格 FF 的解释中找到表2-15日期时间格式元素在网站上https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34924

答案 2 :(得分:0)

max-height