Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-00936 Podczas korzystania z funkcji daty w wyroczni wybierz oświadczenie

Jeśli chcesz the_date pole jako aktualna data:

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 

Jeśli chcesz, aby wartość godziny była liczbą, możesz umieścić to pole w to_number() połączenie. Jeśli to jest do wyświetlenia, powinieneś również wyraźnie sformatować datę:

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 

Lub z jednym polem na datę i godzinę razem:

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 

Zależy, co chcesz zobaczyć i co zamierzasz z tym zrobić.

Niezależnie od tego, których pól używasz do agregacji, musisz określić je w ten sam sposób w group by klauzula - nie możesz używać notacji pozycyjnej, np. group by 1, 2 . I już zdałeś sobie sprawę, że between wartości muszą być w porządku rosnącym, inaczej nic nie znajdzie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie Oracle Insert w procedurze składowanej nie działa po wywołaniu z kodu znajdującego się za nim

  2. Spring's Stored Procedure - wyniki powracające z procedury są zawsze puste

  3. Oracle Database TLS1.2 / połączenie SSL przy użyciu JDBC thin i JKS

  4. Wstaw obiekt BLOB w bazie danych Oracle za pomocą C#

  5. Jak obsłużyć wyjątek i wykonać pozostałe instrukcje?