Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORA-00936 Saat menggunakan fungsi tanggal dalam pernyataan pilih oracle

Jika Anda ingin the_date bidang sebagai tanggal aktual:

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 

Jika Anda menginginkan nilai jam sebagai angka, Anda dapat membungkus bidang itu dalam to_number() panggilan. Jika ini untuk tampilan maka Anda juga harus memformat tanggal secara eksplisit:

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 

Atau dengan satu kolom untuk tanggal dan waktu bersama:

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 

Tergantung apa yang ingin Anda lihat dan apa yang akan Anda lakukan dengannya.

Bidang mana pun yang Anda gunakan untuk agregasi, Anda harus menentukannya dengan cara yang sama di group by klausa - Anda tidak dapat menggunakan notasi posisi, mis. group by 1, 2 . DAN Anda sudah menyadari bahwa between nilai harus dalam urutan menaik atau tidak akan menemukan apa pun.




  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 JDBC DriverManager.getConnection() hang

  2. Cara Membuat Tabel Bersarang Menggunakan Tipe Data Buatan Pengguna Di Database Oracle

  3. Haruskah prosedur dan/atau fungsi paket DBMS_STANDARD digunakan dalam kode PL/SQL?

  4. ORA-31011:Penguraian XML gagal - karakter tidak valid (Oracle sql)

  5. Bagaimana cara mengembalikan plsql lama?