首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Oracle的AM PM中将时间间隔转换为实际时间

在Oracle的AM PM中将时间间隔转换为实际时间
EN

Stack Overflow用户
提问于 2015-08-18 15:38:01
回答 1查看 499关注 0票数 1

如何将时间间隔字段的select语句结果转换为Am/Pm格式的各个时间。我的字段是:

代码语言:javascript
复制
Interval Day(2) To Second(6)

我试过这个:

代码语言:javascript
复制
select To_Char(Att_EntranceTime , 'HH:MI AM') From EMPLOYEEATTENDENCETABLE;

然而,这对我没有帮助,我还尝试将systime中的basetime添加到我的interval字段中,但这没有帮助。有人能建议我怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2015-08-18 16:43:03

正如您已经发现的,间隔不能直接格式化。您可以将时间间隔添加到时间设置为午夜的任何日期,然后格式化生成的日期,以所需的格式显示时间。例如,您可以使用trunc(sysdate)将其添加到今天的日期

代码语言:javascript
复制
to_char(trunc(sysdate) + my_interval, 'HH:MI AM') 

您需要截断它以将时间设置为午夜;否则,结果将是您的时间间隔加上当前系统时间。

或者,您可以使用任何固定的日期;下面是一个带有一些虚拟数据设置的示例:

代码语言:javascript
复制
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天的时间。如果只提取时间部分,则会丢失有关天数的信息。不过,这可能是您希望发生的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32066359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档