oracle 如何将数字形式的“hhmmssss”转换为日期或时间格式?

sd2nnvve  于 2023-05-06  发布在  Oracle
关注(0)|答案(2)|浏览(283)

对于Oracle来说,这是一个非常新的概念,所以完全不知道如何做到这一点。我把时间存储为如下的数字(hhmmssss):
| 工艺时间|
| --------------|
| 10150450|
| 2034039|
我想把它们显示如下:
| 工艺时间|
| --------------|
| 十点十五分零四百五十秒|
| 2:03:4039|
当AM时间没有前导0时。最好的办法是什么?
一个简单的TO_CHAR能在数字长度不同的地方工作吗?

t2a7ltrp

t2a7ltrp1#

with data  (process_time) as (
    select '10150450' from dual union all
    select '2034039' from dual
)
select regexp_replace(process_time, '(^\d{1,2})(\d{2})(\d{4}$)', '\1:\2:\3' )
from data 
;

10:15:0450
2:03:4039
py49o6xq

py49o6xq2#

您可以使用TO_TIMESTAMP将其转换为时间戳,然后使用TO_CHAR对其进行格式化:

SELECT process_time,
       TO_CHAR(
          TO_TIMESTAMP( LPAD(process_time, 8, '0'), 'HH24MISSFF2' ),
          'HH24:MI:SS.FF2'
       ) AS time
FROM   table_name;

其中,对于样本数据:

CREATE TABLE table_name (PROCESS_TIME) AS
SELECT 10150450 FROM DUAL UNION ALL
SELECT 2034039  FROM DUAL

输出:
| 工艺时间|时间|
| --------------|--------------|
| 10150450|10点15分04秒50|
| 2034039|时间02:03:40.39|
fiddle

相关问题