Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-00936 Bei Verwendung der Datumsfunktion in der Oracle-Select-Anweisung

Wenn Sie das the_date möchten Feld als aktuelles 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 

Wenn Sie den Stundenwert als Zahl wünschen, können Sie dieses Feld in to_number() umschließen Anruf. Wenn dies zur Anzeige dient, sollten Sie das Datum auch explizit formatieren:

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 

Oder mit einem Feld für Datum und Uhrzeit zusammen:

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 

Hängt davon ab, was Sie sehen möchten und was Sie damit machen werden.

Unabhängig davon, welche Felder Sie für die Aggregation verwenden, müssen Sie sie in group by auf die gleiche Weise angeben -Klausel - Sie können keine Positionsnotation verwenden, z. group by 1, 2 . Und Sie haben bereits festgestellt, dass der between Werte müssen in aufsteigender Reihenfolge sein oder es wird überhaupt nichts gefunden.