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

Oracle BI:Pilih semua catatan dari minggu lalu

Dimungkinkan untuk menentukan tanggal yang Anda inginkan menggunakan kombinasi hari_berikutnya dan aritmatika tanggal biasa. Kode di bawah ini seharusnya cukup dekat, tetapi belum diuji dan mungkin gagal pada beberapa kasus sudut, tetapi setidaknya Anda mendapatkan gambaran umum :)

where resolved_date >= next_day( trunc(sysdate) - interval '14' day, 'SUN')
  and resolved_date <  next_day( trunc(sysdate) - interval '7'  day, 'SUN')

trunc(sysdate) potong tanggal ke hari; 19-04-2011 23:32:34 menjadi 19-04-2011 00:00:00, yaitu menghapus komponen waktu.next_day(sysdate, 'SUN') kembali pada hari Minggu berikutnya. Jika sysdate kebetulan hari minggu, minggu berikutnya dikembalikan.
Penting :Nama hari harus dalam bahasa yang sama dengan sesi Anda.
interval hal hanyalah cara standar untuk menambah/mengurangi unit waktu yang berbeda dari tanggal.

Jika digabungkan, logika untuk 19 April 2011 adalah:

  1. Truncate sysdate => 2011-04-19 00:00:00
  2. kurangi 14 hari => 05-04-2011 00:00:00
  3. Cari minggu depan => 10-04-2011 00:00:00

...dan

  1. Truncate sysdate => 2011-04-19 00:00:00
  2. kurangi 7 hari => 2011-04-12 00:00:00
  3. Cari minggu depan => 17-04-2011 00:00:00

..menghasilkan kueri berikut:

 where resolved_date >= timestamp '2011-04-10 00:00:00'
   and resolved_date <  timestamp '2011-04-17 00:00:00'

Semua tanggal_penyelesaian yang terjadi pada atau setelah detik pertama tanggal 10 tetapi sebelum detik pertama tanggal 17 akan disertakan. Perhatikan bahwa >= dan < tidak setara dengan between .

Catatan tentang kinerja:Saya akan memastikan bahwa Oracle memperkirakan dengan benar rentang tanggal menjadi 7 hari, dan bahwa urutan/metode bergabung yang benar digunakan. Jika Anda mengharapkan kueri berjalan untuk sementara waktu, Anda dapat menghitung tanggal dalam aplikasi dan menyediakannya sebagai literal tanggal alih-alih menghitungnya dengan cepat seperti yang saya lakukan di atas.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ResultSet.getString(Date) berbeda berdasarkan driver

  2. Pengembang SQL tidak menampilkan XML

  3. Oracle REGEXP_SUBSTR ke SUBSTR + INSTR

  4. subquery skalar dalam pernyataan if Kondisi dalam PL/SQL

  5. Tidak dapat memuat file atau rakitan 'Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342'