Reputation: 1247
I want to get and display the date, hours and minutes separately (3 columns: date, hours and minutes)
My script doesn't work. How to fix this? Thank you
Here's the 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
Upvotes: 3
Views: 38652
Reputation: 796
I find the to_char()
function to be the most flexible for converting and extracting date parts.
Here is an example that extracts the various elements from 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
You can supply different format parameters to get whatever result you require.
Upvotes: 11
Reputation: 1269503
The Oracle functions are extract()
or 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;
I'm not sure what the ()
are after close_time
, but they don't seem necessary.
Upvotes: 0