我们系统中的时间是以数字形式存储的,如何将83315转换为8:33:15 AM ?
这里有一种方法(假设您需要字符串数据类型的输出):
with
inputs (tod_number) as (
select 83315 from dual union all
select 143305 from dual
)
select tod_number,
to_char(to_date(to_char(tod_number, 'fm00g00g00'
, 'nls_numeric_characters=.:')
, 'hh24:mi:ss')
, 'hh:mi:ss AM') as tod_string
from inputs
;
TOD_NUMBER TOD_STRING
---------- -----------
83315 08:33:15 AM
143305 02:33:05 PM
with
子句不是实际查询的一部分——它只是用来模拟输入数据的。删除它,并用实际的表和列名替换表名(我的查询中的inputs
)和列名(tod_number
)。根据需要更改输出(tod_string
)的列名。
解决方案首先将数字转换为hh24:mi:ss
格式的字符串(假定组分隔符为:
,以便字符串有冒号而不是逗号或句号)。然后将其转换为日期,使用不完整的格式模型hh24:mi:ss
;Oracle添加了一个日期组件,但您不关心它是什么,无论是输入还是输出。然后将其转换回具有所需格式模型hh:mi:ss AM
的字符串。