Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 插入时将YYYY-MM-DD HH24:MI:SS.F转换为oracle日期格式_Sql_Oracle_Oracle11g - Fatal编程技术网

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

Sql 插入时将YYYY-MM-DD HH24:MI:SS.F转换为oracle日期格式,sql,oracle,oracle11g,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 我正试图以正确的DATE格式将此数据插入新表TABLEB。我尝试了以下几种解决方案,通常得到ORA-01821:无法识别的日期格式 SELECT TO_DATE(REGDATE, 'YYYY-MM-DD HH

我们在数据库表中将日期存储为
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
我正试图以正确的
DATE
格式将此数据插入新表
TABLEB
。我尝试了以下几种解决方案,通常得到
ORA-01821:无法识别的日期格式

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

有人能帮我吗?

要使用小数秒,您需要将时间戳转换为
,因此:

SELECT TO_TIMESTAMP(REGDATE,'YYYY-MM-DD HH24:MI:SS.FF')
FROM TABLEA
WHERE REGDATE LIKE '2018-03-16%';
如果需要将此作为日期,请在以后转换:

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

要使用小数秒,您需要转换为时间戳,因此:

SELECT TO_TIMESTAMP(REGDATE,'YYYY-MM-DD HH24:MI:SS.FF')
FROM TABLEA
WHERE REGDATE LIKE '2018-03-16%';
如果需要将此作为日期,请在以后转换:

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

更新

没错,Oracle不支持日期格式的小数秒。这也是写在链接网站上的原始答案。。。哎呀

以下日期时间格式元素可用于时间戳和间隔格式模型,但不能用于原始日期格式模型: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%'

如表2-15网站上的Datetime Format Elements(日期时间格式元素)中对元素FF的解释所示

没错,Oracle不支持日期格式的小数秒。这也是写在链接网站上的原始答案。。。哎呀

以下日期时间格式元素可用于时间戳和间隔格式模型,但不能用于原始日期格式模型: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%'

正如在网站上的表2-15 Datetime Format Elements(日期时间格式元素)中对元素FF的解释所示,我在您提到的查询中再次遇到此错误“ORA-01821:日期格式未识别”。非常感谢Max。更新后的查询非常有效。还感谢您的详细解释:)我在您提到的查询中再次遇到错误“ORA-01821:日期格式未识别”。非常感谢Max。更新后的查询工作得非常好。同时也感谢您的详细解释:)您好,戈登,我收到两个解决方案的“ORA-01821:日期格式未识别”。@SaiAvinash-唯一的
F
无效,并导致该错误;这应该是
FF
,可以选择使用最大小数位数(但实际上不需要这样转换)。@SaiAvinash。你知道什么是可悲的吗?事实上,我测试了答案,输入了两个“FF”,然后复制回了错误的版本。你好,戈登,我在两个解决方案中都得到了“ORA-01821:日期格式未识别”。@SaiAvinash-唯一的
F
无效,导致了错误;这应该是
FF
,可以选择使用最大小数位数(但实际上不需要这样转换)。@SaiAvinash。你知道什么是可悲的吗?事实上,我测试了答案,输入了双“FF”,然后复制了错误的版本。