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

Oracle BI:Изберете всички записи от миналата седмица

Възможно е да определите датите, които искате, като използвате комбинации от следващия_ден и обикновена аритметика с дати. Кодът по-долу трябва да е доста близък, но не е тестван и вероятно се проваля в някой ъглов случай, но поне получавате общата идея :)

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

trunc(sysdate) съкращаване на датата до ден; 2011-04-19 23:32:34 става 2011-04-19 00:00:00, т.е. компонентът за време се премахва.next_day(sysdate, 'SUN') връща се следващата неделя. Ако sysdate е неделя, се връща следващата неделя.
Важно :Имената на дните трябва да са на същия език като вашата сесия.
Интервалът interval това е просто стандартен начин за добавяне/изваждане на различни единици време от дата.

Обединявайки всичко това, логиката за 19 април 2011 г. би била:

  1. Отрязване на sysdate => 2011-04-19 00:00:00
  2. извадете 14 дни => 2011-04-05 00:00:00
  3. Намерете следващата неделя => 2011-04-10 00:00:00

... и

  1. Отрязване на sysdate => 2011-04-19 00:00:00
  2. извадете 7 дни => 2011-04-12 00:00:00
  3. Намерете следващата неделя => 2011-04-17 00:00:00

..което води до следната заявка:

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

Ще бъдат включени всички resolved_dates, случили се на или след първата секунда на 10-ти, но преди първата секунда на 17-ти. Имайте предвид, че >= и < не е еквивалентно на between .

Бележка относно производителността:Бих се уверил, че Oracle правилно оценява диапазона от дати на 7 дни и че се използва правилният ред/метод на присъединяване. Ако очаквате заявката да се изпълнява известно време, можете да си позволите да изчислите датите в приложението и да ги предоставите като литерали за дати, вместо да ги изчислявате в движение, както направих по-горе.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте таблица с динамични имена с подготвен израз в java

  2. Функция на Oracle за сравняване на низове по неподреден начин

  3. Създайте Apex формуляр с множество страници

  4. LDAP търсене с помощта на ODP.NET, управляван драйвер бета (Oracle.ManagedDataAccess.dll) се проваля в C# приложение

  5. Преобразувайте Varchar2 в масив Char в Oracle