我在Oracle SQL中有一个查询,显示结果如下:
SQL:
select
uuid, name,
to_char(from_tz(startdate, 'UTC') at time zone 'America/New_York', 'yyyy-mm-dd hh24:mi:ss') as startdate_et,
to_char(from_tz(enddate, 'UTC') at time zone 'America/New_York', 'yyyy-mm-dd hh24:mi:ss') as enddate_et,
(enddate - startdate) as executiontime
from
process
where
name = (select name from jobconfiguration where currentprocessid = 'bGd_AAABNaMAAAFQHvY0UyTa');
此处的问题是executiontime
列中的数据。毫秒值太长,我想从头开始删除+00
并将02.951000
修剪为02.95
和03.284000
修剪为03.28
。< / p>
请指导。
答案 0 :(得分:0)
两个时间戳之间的差异是间隔。默认情况下,这包括第二部分的长分数。
出于打印目的,只需使用to_char()
:
to_char(fenddate - startdate, 'dd hh24:mi:ss') as executiontime
因为差异的默认值是“天到秒”的间隔,所以您只需要包含这些元素。
答案 1 :(得分:0)
两个时间戳的差异已经很好地格式化并以格式打印 +/-天数小时:分钟:秒。毫秒
为什么你不想要+00,是因为它是0天? 我假设如果天差大于零,你会想要吗?
无论如何,使用 substr 更容易根据需要格式化输出,并在使用天数时使用案例。
例如 substr(start_time-end_time,instr(start_time-end_time,'。')+ 1,2)将毫秒修剪为两位数。
和 to_number的情况(substr(start_time-end_time,1,instr(start_time-end_time,'')))&gt; 0然后substr(start_time-end_time,1,instr(start_time-end_time,''))else''结束 获得天数
或 substr(start_time-end_time,instr(start_time-end_time,''))完全删除日期