sql >> Database teknologi >  >> RDS >> Oracle

ORA-00936 Når du bruger datofunktionen i oracle select-sætningen

Hvis du vil have the_date felt som en faktisk dato:

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 

Hvis du vil have timeværdien som et tal, kan du indpakke feltet i en to_number() opkald. Hvis dette er til visning, skal du også udtrykkeligt formatere datoen:

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 

Eller med ét felt for dato og klokkeslæt sammen:

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 

Afhænger af, hvad du vil se, og hvad du vil gøre med det.

Uanset hvilke felter du bruger til aggregeringen, skal du angive dem på samme måde i group by klausul - du kan ikke bruge positionsnotation, f.eks. group by 1, 2 . OG du har allerede indset, at between værdier skal være i stigende rækkefølge, ellers finder den ikke noget overhovedet.




  1. Postgresql BESTIL EFTER mellemrum

  2. hvor er min database gemt, når jeg opretter den i MySQL?

  3. Sådan løses fejl ved ulovlig blanding af sammenstillinger (latin1_general_ci,IMPLICIT).

  4. Lagring af kode i en SQL-database og eksekvering af den