tags:

views:

81

answers:

2

Hi

I was trying to display just the hours in 24hr format like:

select to_char(trunc(sysdate+(1/24)),'HH24:mi') from dual

But this only always returns 00:00. How can I show 01:00 to 23:00?

Thanks and Regards

+2  A: 

This will work for Oracle 9i+:

SELECT TO_CHAR(TRUNC(SYSDATE) + (LEVEL / 24)), 'HH24:mi') 
  FROM DUAL
CONNECT BY LEVEL <= 24
OMG Ponies
+1 ... needed something just like this for a complex query involving a result set of hours for the last day - now we'll see if the optimizer leaves it alone :-)
dpbradley
+1  A: 

If you want to display hours, you need your date to actually contain hours. That means - get your brackets for TRUNC() right.

This is good.

SELECT TO_CHAR(TRUNC(SYSDATE) + (LEVEL / 24), 'HH24:mi') 
  FROM DUAL
CONNECT BY LEVEL <= 24

This is not good.

SELECT TO_CHAR(TRUNC(SYSDATE + (LEVEL / 24)), 'HH24:mi') 
  FROM DUAL
CONNECT BY LEVEL <= 24
jva