Als je de the_date
. wilt veld als een actuele datum:
select trunc(date '1970-01-01' + datetimeorigination / (24*60*60)) as the_date,
to_char(date '1970-01-01' + datetimeorigination / (24*60*60),
'HH24') as the_hour,
count(record_id)
from table_a
group by trunc(date '1970-01-01' + datetimeorigination / (24*60*60)),
to_char(date '1970-01-01' + datetimeorigination / (24*60*60), 'HH24');
THE_DATE THE_HOUR COUNT(RECORD_ID)
--------- -------- ----------------
24-SEP-13 14 1
20-SEP-13 18 1
Als u de uurwaarde als een getal wilt, kunt u dat veld in een to_number()
. plaatsen telefoongesprek. Als dit voor weergave is, moet u de datum ook expliciet opmaken:
select to_char(date '1970-01-01' + datetimeorigination / (24*60*60),
'YYYY-MM-DD') as the_date,
to_char(date '1970-01-01' + datetimeorigination / (24*60*60),
'HH24') as the_hour,
count(record_id)
from table_a
group by to_char(date '1970-01-01' + datetimeorigination / (24*60*60),
'YYYY-MM-DD'),
to_char(date '1970-01-01' + datetimeorigination / (24*60*60), 'HH24');
THE_DATE THE_HOUR COUNT(RECORD_ID)
---------- -------- ----------------
2013-09-24 14 1
2013-09-20 18 1
Of met één veld voor de datum en tijd samen:
select to_char(date '1970-01-01' + datetimeorigination / (24*60*60),
'YYYY-MM-DD HH24') as the_hour,
count(record_id)
from table_a
group by to_char(date '1970-01-01' + datetimeorigination / (24*60*60),
'YYYY-MM-DD HH24');
THE_HOUR COUNT(RECORD_ID)
------------- ----------------
2013-09-24 14 1
2013-09-20 18 1
Hangt ervan af wat je wilt zien en wat je ermee gaat doen.
Welke velden u ook gebruikt voor de aggregatie, u moet ze op dezelfde manier specificeren in de group by
clausule - u kunt geen positionele notatie gebruiken, b.v. group by 1, 2
. En je realiseerde je al dat de between
waarden moeten in oplopende volgorde staan, anders vindt hij helemaal niets.