2014-10-30 65 views
0

我想和显示日期,小时和分钟分开(3列:日期,小时和分钟)如何在oracle sql中获取小时和分钟?

我的脚本不起作用。如何解决这个问题?谢谢

这里的SQL:

select trunc(t.create_time, 'DD') as createdate 
      ,trunc(t.close_time, 'DD') as closedate 
      ,datepart(hour, t.close_time()) as hours 
      ,datepart(minute, t.close_time()) as minutes 
      ,count(t.close_time) as total 
     from app_account.otrs_ticket t 
     left join app_account.otrs_user u 
     on t.create_user_id=u.id 
     where u.id not in (15,7,31,49,50,52,62,66,69,106,17,24,44,32,33,55,22,29,30,47,45,53,70,74,109,1,2,10,23,68,80,20,21,56,108,67) 
     group by trunc(t.create_time, 'DD') 
       ,trunc(t.close_time, 'DD') 
       ,datepart(hour, t.close_time()) 
       ,datepart(minute, t.close_time()) 
     order by trunc(t.create_time, 'DD') desc 

回答

3

我发现to_char()函数是转换和提取日期部分最灵活的函数。

这里是提取自SYSDATE的各种元素的例子:

select to_char(sysdate, 'YYYY') as year, 
     to_char(sysdate, 'MM') as month, 
     to_char(sysdate, 'DD') as day, 
     to_char(sysdate, 'HH24') as hour, 
     to_char(sysdate, 'MI') as minute 
from dual 

您可以提供不同格式的参数,以获得任何结果,您需要。

0

Oracle的功能extract()to_char()

select trunc(t.create_time, 'DD') as createdate, 
     trunc(t.close_time, 'DD') as closedate, 
     extract(hour from t.close_time) as hours, 
     extract(minute from t.close_time) as minutes, 
     count(t.close_time) as total 
from app_account.otrs_ticket t left join 
     app_account.otrs_user u 
     on t.create_user_id=u.id 
where u.id not in (15,7,31,49,50,52,62,66,69,106,17,24,44,32,33,55,22,29,30,47,45,53,70,74,109,1,2,10,23,68,80,20,21,56,108,67) 
group by trunc(t.create_time, 'DD'), trunc(t.close_time, 'DD') 
      extract(hour from t.close_time) as hours, 
      extract(minute from t.close_time) as minutes 
order by trunc(t.create_time, 'DD') desc; 

我不知道什么是()close_time,但他们似乎并没有必要。

+0

我测试你的脚本,我得到一个错误:ORA-30076:提取源的无效提取字段 30076. 00000 - “提取源的无效提取字段” *原因:提取源不包含指定的提取字段。 – User014019 2014-10-30 03:25:07

+0

这些功能在Oracle中可用一段时间:http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions050.htm。 – 2014-10-30 03:30:36

+0

't.close_time'可能不是日期/时间值吗? – 2014-10-30 03:31:44