【问题标题】:Oracle convert hhmmss to hh:mm:ssOracle 将 hhmmss 转换为 hh:mm:ss
【发布时间】:2019-02-27 19:31:09
【问题描述】:

我在旧的 Oracle 数据库中有一些时间戳数据需要转换为 HH:MM:SS。尝试使用 to_char 函数后,我给出的值不可读(例如 105001,to_char('105001','HH24:MI:SS)),此 SQL 将中断。我可以将 sysdate 转换为不正确的格式,但我无法反转该过程。

例如:

select to_char(sysdate, 'HHmiss')from table

返回“105001”

我需要将 hhmmss 格式转换为 HH:MM:SS 的东西,所以当我生成一个 select 语句时,它是可读的格式。

【问题讨论】:

  • 105001 是一个数字,'105001' 是一个字符串(因此将其传递给 to_char() 并没有什么意义)。时间戳也不是。你实际上是从什么数据类型开始的?目前尚不清楚您真正想要做什么,因此示例数据和预期结果可能会有所帮助。我怀疑你实际上只是在看一个无用的 NLS 设置,但这真的很难说......
  • 您需要先将您的号码转换为日期,例如to_char(to_date(105001, 'hh24miss'), 'hh24:mi:ss')

标签: oracle


【解决方案1】:

我在旧的 Oracle 数据库中有一些时间戳数据需要转换为 HH:MM:SS

只需使用 HH24 获取 24 小时制并将 : 分隔符添加到您的格式模型,然后使用 TO_CHAR 函数将该格式直接应用于您的 TIMESTAMP 列:

Oracle 11g R2 架构设置

CREATE TABLE table_name ( your_timestamp_column TIMESTAMP );

INSERT INTO table_name ( your_timestamp_column )
  VALUES ( TIMESTAMP '2018-09-24 12:34:56' );

查询 1

SELECT TO_CHAR( your_timestamp_column, 'HH24:MI:SS') FROM table_name

Results

| TO_CHAR(YOUR_TIMESTAMP_COLUMN,'HH24:MI:SS') |
|---------------------------------------------|
|                                    12:34:56 |

您无需将其输出为HHMMSS 字符串,然后尝试重新格式化以添加分隔符,因为这不必要地复杂。

【讨论】:

    【解决方案2】:

    您可以先从 dual 表中选择虚拟表

    有两种不同的方式来打发时间

    24 小时:如 5 点和 15 点

    select to_char(sysdate, 'HH24:MI:SS')from dual
    

    结果

    14:25:56
    

    12 小时:例如凌晨 2 点和下午 2 点

    select to_char(sysdate, 'HH:MI:SS AM')from dual
    

    结果

    02:22:35 PM
    

    【讨论】:

      猜你喜欢
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 2023-02-04
      • 2021-05-18
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多