如何将 2020-08-17 02:18:34+0000 转换为 Oracle DATE 类型

Posted

技术标签:

【中文标题】如何将 2020-08-17 02:18:34+0000 转换为 Oracle DATE 类型【英文标题】:How to convert 2020-08-17 02:18:34+0000 to Oracle DATE type 【发布时间】:2021-02-02 14:25:16 【问题描述】:

我将“2020-08-17 02:18:34+0000”作为 CSV 字符串,并希望将其插入到具有 DATE 类型的 oracle 表列中。我正在通过 JDBC 批处理代码加载表。我试过了

TO_DATE (TO_CHAR (TO_TIMESTAMP ('2020-08-17 02:18:34+0000', 'RRRR-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS')

但它没有工作。请帮忙。谢谢。

编辑 错误信息: 错误报告 - SQL 错误:ORA-01830:日期格式图片在转换整个输入字符串之前结束 01830. 00000 - “日期格式图片在转换整个输入字符串之前结束” *原因: *行动:

【问题讨论】:

“没有工作”在任何错误消息中都找不到。帮助我们帮助您。不要让我们猜测错误信息是什么。 在java中你可以用LocalDate.parse(接受DateTimeFormatter作为第二个输入的那个)解析它。然后toString方法将返回一个格式应该与sql日期兼容的日期(即YYYY-mm-dd 你有一个逻辑问题,在去“代码”之前。你所拥有的不是时间戳。它是一个带有时区的时间戳。如果您忽略时区,您将丢失信息。 所有您的输入是否会位于同一时区 +0000,即 UTC (GMT)?如果没有,您肯定会丢失信息。 【参考方案1】:

如果您将时间戳存储为 DATE - 您将失去上下文。字符串末尾的 +0000 是否代表 UTC 时区,如 +/- '0 hours'?

如果您有一些大于 +0 的条目,则删除该信息将改变上下文。爱尔兰的下午 3 点不是纽约市的下午 3 点。使用 DATES 会丢失所有上下文,是否需要翻译这些时差?

select cast(to_timestamp('2020-08-17 02:18:34+0000', 'YYYY-MM-DD HH:MI:SS+FF') as date) dates from dual;

如果您想将 +0000 视为您的日期格式模型的一次性文本,您也可以使用

select to_date('2020-08-17 02:18:34+0000', 'YYYY-MM-DD HH:MI:SS"+0000"') dates from dual;

【讨论】:

错误...不。掩码应为'...MI:SSTZHTZR'。 “加号”不是分隔符,它是代数符号(TZH 的一部分);和 FF 是小数秒,它不存在于 OP 的输入中。您的格式模型将 +0000 解释为小数秒而不是时区小时和分钟;尽管 OP 认为它是正确的,但绝对是错误的。 对不起-我的意思是TZHTZM。现在:也许缺少冒号会让你失望(虽然军事时间技术上不使用冒号,所以这并不“不寻常”);但是 + 号作为小数分隔符?曾经吗? 我试图撤回我的答案,但它已被 OP 接受,是否有上帝不接受答案? 替代方法是编辑答案以使其正确:-) 在我看来,最简单的解决方案 - 假设所有日期的时区 +0000 - 将其视为样板文本(如双引号中的格式模型),并直接使用 TO_DATE。不过,更大的问题 - 请参阅我在 OP 问题下的评论 - 是一个合乎逻辑的问题。输入是带有时区的时间戳。另存为 DATE 会丢失信息。 对,他们可以接受失去 tz 吗?他们是否意识到 ts 与 tz 和 date 之间的区别?【参考方案2】:
TO_TIMESTAMP ('2020-08-17 02:18:34+0000', 'RRRR-MM-DD HH24:MI:SS')

您的描述“RRRR-MM-DD HH24:MI:SS”与时间戳的字符串表示不匹配。您必须考虑“+0000”

另外,请注意,RR 格式掩码是一种创可贴,可以为处理 Y2k 错误赢得一些时间。那是二十多年前的事了。早就放弃它并使用YYYY了。

【讨论】:

以上是关于如何将 2020-08-17 02:18:34+0000 转换为 Oracle DATE 类型的主要内容,如果未能解决你的问题,请参考以下文章

关于如何插入到 html 表中的具体信息

大数据之都 看贵阳如何构建数据安全靶场?

MySQL 服务无法启动。服务没有报告任何错误?

一步步拆解解决 Elasticsearch 检索模板问题

C语言---统计字符串中统计单词个数

Linux指定时间格式获取时间信息