sql >> Base de Datos >  >> RDS >> Oracle

ORA-00936 Al usar la función de fecha en la declaración de selección de Oracle

Si quieres el the_date campo como una fecha real:

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 

Si desea que el valor de la hora sea un número, puede envolver ese campo en un to_number() llamar. Si esto es para mostrar, también debe formatear explícitamente la fecha:

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 

O con un campo para la fecha y la hora juntas:

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 

Depende de lo que quieras ver y de lo que vayas a hacer con él.

Independientemente de los campos que utilice para la agregación, debe especificarlos de la misma manera en el group by cláusula:no puede usar notación posicional, p. group by 1, 2 . Y ya te diste cuenta de que el between los valores deben estar en orden ascendente o no encontrará nada en absoluto.