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

Memilih karyawan dengan ulang tahun dalam rentang tertentu menggunakan Oracle SQL

Ada lebih dari satu cara untuk mencari rentang tanggal di Oracle. Untuk skenario Anda, saya sarankan Anda mengubah elemen bulan dan hari dari semua tanggal yang terlibat menjadi angka.

select
  p.id as person_id,
   ...
   ...
  where e.active = 1
  and to_number (to_char( e.dateOfBirth, 'MMDD')) 
      between to_number (to_char( FROMDATE, 'MMDD'))
              and to_number (to_char( TODATE, 'MMDD')) 
  order by extract(month from e.dateOfBirth) DESC,
          extract(day from e.dateOfBirth) DESC

Ini tidak akan menggunakan indeks apa pun pada e.dateOfBirth kolom. Apakah itu penting tergantung pada seberapa sering Anda ingin menjalankan kueri.

@AdeelAnsari komentar:

indeks apa? Indeks normal pada dateOfBirth tidak akan ada gunanya, karena entri indeks akan mengarah dengan elemen tahun. Jadi itu tidak akan membantu Anda menemukan semua catatan orang yang lahir di apa pun 23 Desember.

Indeks berbasis fungsi - atau dalam 11g, kolom virtual dengan indeks (pada dasarnya sama) - adalah satu-satunya cara mengindeks bagian kolom tanggal.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lotus Notes XPages untuk desain dan Oracle (atau RDBMS lainnya) untuk data

  2. Bagaimana saya bisa membuat validasi langsung sisi server oracle apex tanpa perlu mengirimkan halaman?

  3. Cara menggunakan oracle client 11.2 dengan php (xampp) di win7 x64

  4. Bagaimana cara mengatasi masalah pemetaan parameter kueri SQL saat menggunakan penyedia Oracle OLE DB?

  5. Cara menulis aplikasi .Net yang berfungsi dengan SqlServer dan Oracle (sekarang System.Data.OracleClient tidak digunakan lagi)