sql >> Database >  >> RDS >> Oracle

Oracle Selecteer waar datum tussen vandaag

Ervan uitgaande dat date_enter is een DATE veld:

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

De trunc() functie verwijdert standaard het tijdgedeelte, dus trunc(sysdate) geeft je vanmorgen middernacht.

Als u zich vooral wilt houden aan between , en je hebt een DATE geen TIMESTAMP , je zou kunnen doen:

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

between is inclusief, dus als je geen seconde vrij neemt, kun je mogelijk platen ophalen vanaf precies middernacht vanavond; dus dit genereert de 23:59:59 tijd die u zocht in uw oorspronkelijke zoekopdracht. Maar met >= en < is naar mijn mening in ieder geval een beetje duidelijker en explicieter.

Als je zeker weet dat je toch geen datums later dan vandaag kunt hebben, voegt de bovengrens niet echt iets toe, en je zou hetzelfde resultaat krijgen met alleen:

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

Je wilt trunc niet gebruiken of to_char op de date_enter kolom echter; het gebruik van een functie voorkomt dat een index op die kolom wordt gebruikt, daarom uw zoekopdracht met to_char was te traag.



  1. 5 interessante feiten over databasebeheersystemen

  2. Wat zijn de 6 belangrijkste componenten van Microsoft Access?

  3. Hoe MySql op Mac te gebruiken

  4. Waarom komen NULL-waarden eerst bij het bestellen van DESC in een PostgreSQL-query?