我们将日期存储为VARCHAR2
在我们的数据库表
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%'
有人可以帮助我吗?
答案 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