sql >> Databasteknik >  >> RDS >> Oracle

Oracle BI:Välj alla poster från förra veckan

Det är möjligt att bestämma vilka datum du vill använda med kombinationer av nästa_dag och vanlig datumräkning. Nedanstående kod borde vara ganska nära, men den är opröstad och misslyckas förmodligen på något hörnfodral, men du förstår åtminstone den allmänna uppfattningen :)

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

trunc(sysdate) trunkera datum till dag; 2011-04-19 23:32:34 blir 2011-04-19 00:00:00, dvs. tar bort tidskomponenten.next_day(sysdate, 'SUN') återkommer nästa söndag. Om sysdate råkar vara en söndag, returneras nästa söndag.
Viktigt :Dagens namn måste vara på samma språk som din session.
interval sak är bara ett standardsätt att lägga till/subtrahera olika tidsenheter från ett datum.

Sammantaget skulle logiken för den 19 april 2011 vara:

  1. Truncate sysdate => 2011-04-19 00:00:00
  2. subtrahera 14 dagar => 2011-04-05 00:00:00
  3. Hitta nästa söndag => 2011-04-10 00:00:00

...och

  1. Truncate sysdate => 2011-04-19 00:00:00
  2. subtrahera 7 dagar => 2011-04-12 00:00:00
  3. Hitta nästa söndag => 2011-04-17 00:00:00

..som resulterar i följande fråga:

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

Alla resolved_dates som inträffade på eller efter den första sekunden av den 10:e men före den första sekunden av den 17:e skulle inkluderas. Observera att >= och < motsvarar inte between .

En notering om prestanda:Jag skulle se till att Oracle korrekt uppskattar datumintervallet till 7 dagar, och att rätt joinorder/metod används. Om du förväntar dig att frågan ska köras ett tag, har du råd att beräkna datumen i applikationen och tillhandahålla dem som datumbokstavar istället för att beräkna dem i farten som jag gjorde ovan.



  1. Data sparas två gånger i MySQL-databasen. Vet du inte vad jag gör för fel?

  2. MySQL lagrad procedur orsakade `Kommandon ur synk`

  3. utvalda användare har mer än en distinkt post i mysql

  4. Kan inte använda postgres-användare i ny databas för rails 3 på ubuntu 10.04-servern