Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-00936 Когато използвате функцията за дата в командата за избор на оракул

Ако искате the_date поле като действителна дата:

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 

Ако искате стойността на часа като число, можете да обвиете това поле в to_number() повикване. Ако това е за показване, тогава трябва изрично да форматирате и датата:

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 

Или с едно поле за дата и час заедно:

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 

Зависи какво искате да видите и какво ще правите с него.

Които и полета да използвате за агрегирането, трябва да ги посочите по същия начин в group by клауза - не можете да използвате позиционна нотация, напр. group by 1, 2 . И вече разбрахте, че between стойностите трябва да са във възходящ ред или изобщо няма да намери нищо.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да криптирате данни в Oracle с помощта на PL SQL

  2. Как да зададете брояч въз основа на условие

  3. Твърде дълга грешка в низовия литерал на Oracle Sql Developer

  4. Oracle SQL за преобразуване на свързани редове в един ред

  5. Oracle:DDL и връщане на транзакциите