将存储为 hh24miss 的时间转换为 hh24:mi:ss

Posted

技术标签:

【中文标题】将存储为 hh24miss 的时间转换为 hh24:mi:ss【英文标题】:Convert time stored as hh24miss to hh24:mi:ss 【发布时间】:2014-04-22 08:13:37 【问题描述】:

我的表中有一个列,它将时间存储为 hh24miss 格式,即它存储为 091315,即 09 小时 13 分 15 秒。我需要将其转换为 HH24:MI:SS 并将其与YYYYMMDD 格式的日期列连接起来。

简单地说,以下两列 Date:19940601 和 Time:091315 需要转换为 01-Jan-94 09:13:15.

【问题讨论】:

为什么将日期和时间存储在单独的列中,并作为字符串?我认为这两列都是varchar2? 【参考方案1】:

您不应将日期存储为字符串,也无需将时间存储在单独的字段中。 Oracle's DATE data type 包括从秒到秒的时间。 (你需要TIMESTAMP 几分之一秒)。

如果你真的被这个架构卡住了,那么你需要将两个字符串转换成DATE

to_date(date_column || time_column, 'YYYYMMDDHH24MISS')

然后您可以以任何您想要的格式显示它;你展示的是:

to_char(to_date(date_column || time_column, 'YYYYMMDDHH24MISS'),
  'DD-Mon-RR HH24:MI:SS')

虽然您拥有的数据是 6 月,而不是 1 月。

SQL Fiddle demo.

但实际上,请重新访问您的架构并为此使用适当的数据类型,不要将值存储为字符串。您没有验证,也没有简单的方法来检查您存储的值是否实际代表有效的日期和时间。

【讨论】:

谢谢 Alex.. 干得好,你解决了我所有的问题 ;) 欢迎来到 Stack Overflow @user2160918。请注意,在这里说“谢谢”的首选方式是投票赞成好的问题和有用的答案(一旦你有足够的声誉这样做),并接受对你提出的任何问题最有帮助的答案(这也给出了你的声誉小幅提升)。请参阅About 页面和How do I ask questions here?

以上是关于将存储为 hh24miss 的时间转换为 hh24:mi:ss的主要内容,如果未能解决你的问题,请参考以下文章

如何将存储为 VARCHAR2 的日期转换为 'MM/DD/YYYY HH24:MI:SS'?

如何在 Oracle 中将毫秒转换为 hh mm ss 格式

将float 1.88转换为字符串HH:MM

仅在 javascript 中将 HH:MM:SS 字符串转换为秒

SSIS HH::MM:SS 到秒,HH 部分在 SSIS 中超过 24

将格式为“yyyy-MM-dd HH:mm:ss.m”的日期字符串转换为“yyyy-MM-dd HH:mm:ss”时出现问题