如何将时间间隔字段的select语句结果转换为Am/Pm格式的各个时间。我的字段是:
Interval Day(2) To Second(6)我试过这个:
select To_Char(Att_EntranceTime , 'HH:MI AM') From EMPLOYEEATTENDENCETABLE;然而,这对我没有帮助,我还尝试将systime中的basetime添加到我的interval字段中,但这没有帮助。有人能建议我怎么做吗?
发布于 2015-08-18 16:43:03
正如您已经发现的,间隔不能直接格式化。您可以将时间间隔添加到时间设置为午夜的任何日期,然后格式化生成的日期,以所需的格式显示时间。例如,您可以使用trunc(sysdate)将其添加到今天的日期
to_char(trunc(sysdate) + my_interval, 'HH:MI AM') 您需要截断它以将时间设置为午夜;否则,结果将是您的时间间隔加上当前系统时间。
或者,您可以使用任何固定的日期;下面是一个带有一些虚拟数据设置的示例:
create table my_table (my_interval interval day(2) to second(6));
insert into my_table (my_interval) values (interval '0 12:34:56.78' day to second);
insert into my_table (my_interval) values (interval '99 01:02:03.456' day to second);
select my_interval, to_char(date '1970-01-01' + my_interval, 'HH:MI AM') as formatted
from my_table;
MY_INTERVAL FORMATTED
-------------------- ---------
+00 12:34:56.780000 12:34 PM
+99 01:02:03.456000 01:02 AM第二个值显示了一个潜在问题。您的间隔被定义为允许两位数的天数,这意味着间隔可以跨越任何小于100天的时间。如果只提取时间部分,则会丢失有关天数的信息。不过,这可能是您希望发生的事情。
https://stackoverflow.com/questions/32066359
复制相似问题