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

Oracle Wybierz miejsce między dzisiejszą datą

Zakładając, że date_enter to DATE pole:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter >= trunc(sysdate)
   And CuRo.Date_Enter < trunc(sysdate) + 1;

trunc() funkcja domyślnie usuwa część czasu, więc trunc(sysdate) daje ci północ dziś rano.

Jeśli szczególnie chcesz trzymać się between i masz DATE nie TIMESTAMP , możesz zrobić:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter between trunc(sysdate)
      And trunc(sysdate) + interval '1' day - interval '1' second;

between jest inkluzywny, więc jeśli nie weźmiesz sekundy, potencjalnie odbierzesz nagrania dokładnie od północy; więc generuje to godzinę 23:59:59, której szukałeś w pierwotnym zapytaniu. Ale używając >= i < moim zdaniem jest nieco jaśniejszy i bardziej wyraźny.

Jeśli masz pewność, że i tak nie możesz mieć dat późniejszych niż dzisiaj, górna granica tak naprawdę niczego nie dodaje, a ten sam wynik uzyskasz po prostu:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter >= trunc(sysdate);

Nie chcesz używać trunc lub to_char w dniu date_enter kolumna chociaż; użycie dowolnej funkcji uniemożliwia użycie indeksu w tej kolumnie, dlatego zapytanie z to_char był zbyt wolny.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Concurrent Manager — CP Analyzer dla pakietu E-Business Suite

  2. Jak uzyskać wygenerowane klucze przez executeBatch bez ArrayIndexOutOfBoundsException?

  3. Nie mogę połączyć mojej instancji RDS Oracle z serwerem PHP

  4. Funkcja wymiany Oracle

  5. Grupowanie/porządkowanie Oracle SQL