将数字转换为时间SQL



我们系统中的时间是以数字形式存储的,如何将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的字符串。

最新更新