sql >> Databáze >  >> RDS >> Oracle

ORA-00936 Při použití funkce data v příkazu Oracle select

Pokud chcete the_date pole jako skutečné 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 

Pokud chcete hodnotu hodiny jako číslo, můžete toto pole zabalit do to_number() volání. Pokud je to pro zobrazení, měli byste také explicitně naformátovat datum:

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 

Nebo s jedním polem pro datum a čas společně:

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 

Záleží, co chcete vidět a co s tím budete dělat.

Ať už pro agregaci použijete kterákoli pole, musíte je zadat stejným způsobem v group by klauze - nelze použít poziční zápis, např. group by 1, 2 . A už jste si uvědomili, že between hodnoty musí být ve vzestupném pořadí, jinak nenajde vůbec nic.




  1. GROUP BY a agregovat sekvenční číselné hodnoty

  2. Jak mohu nastavit limit velikosti pro datový typ int v PostgreSQL 9.5

  3. Použití Template::Toolkit s daty pole z databáze

  4. Příkaz SQLite REPLACE