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

Oracle BI:Wybierz wszystkie rekordy z zeszłego tygodnia

Możliwe jest określenie dat, które chcesz, używając kombinacji następnego dnia i regularna arytmetyka dat. Poniższy kod powinien być dość zbliżony, ale nie został przetestowany i prawdopodobnie zawiedzie w jakimś rogu, ale przynajmniej masz ogólny pomysł :)

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

trunc(sysdate) skróć datę do dnia; 2011-04-19 23:32:34 staje się 2011-04-19 00:00:00, co oznacza usunięcie składnika czasu.next_day(sysdate, 'SUN') wraca w następną niedzielę. Jeśli sysdate wypada w niedzielę, zwracana jest następna niedziela.
Ważne :nazwy dni muszą być w tym samym języku co sesja.
interval rzecz jest tylko standardowym sposobem dodawania/odejmowania różnych jednostek czasu od daty.

Podsumowując, logika na 19 kwietnia 2011 r. wyglądałaby następująco:

  1. Skróć sysdate => 19.04.2011 00:00:00
  2. odejmij 14 dni => 05.04.2011 00:00:00
  3. Znajdź następną niedzielę => 10.04.2011 00:00:00

...i

  1. Skróć sysdate => 19.04.2011 00:00:00
  2. odejmij 7 dni => 12.04.2011 00:00:00
  3. Znajdź następną niedzielę => 17.04.2011 00:00:00

..co skutkuje następującym zapytaniem:

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

Uwzględnione zostaną wszystkie resolved_dates, które miały miejsce w pierwszej sekundzie 10:-tej lub później, ale przed pierwszą sekundą 17:-tej. Zauważ, że >= i < nie jest równoważne z between .

Uwaga na temat wydajności:upewniłbym się, że Oracle poprawnie oszacował zakres dat na 7 dni i że użyto prawidłowej kolejności/metody złączenia. Jeśli spodziewasz się, że zapytanie będzie działać przez jakiś czas, możesz sobie pozwolić na obliczenie dat w aplikacji i dostarczenie ich jako literałów dat zamiast obliczania ich w locie, tak jak to zrobiłem powyżej.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Proste zapytanie Oracle:literał nie pasuje do ciągu formatu

  2. Zmiana sesji spowalnia zapytanie przez Hibernate

  3. Nie można połączyć się z Oracle za pomocą PDO

  4. Dlaczego Oracle wymaga aliasu dla kolumn w widoku podczas wyłuskiwania obiektu?

  5. Oracle — zwróć wiele zliczeń jako jedno zapytanie