sql >> Databasteknik >  >> RDS >> Oracle

Oracle Välj Where Date Between Today

Förutsatt date_enter är ett DATE fält:

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

trunc() funktion tar bort tidsdelen som standard, så trunc(sysdate) ger dig midnatt i morse.

Om du särskilt vill hålla dig till between , och du har en DATE inte en TIMESTAMP , du kan göra:

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

between är inkluderande, så om du inte tar ledigt en sekund kan du potentiellt plocka upp skivor från exakt midnatt ikväll; så detta genererar den 23:59:59 tiden du letade efter i din ursprungliga fråga. Men med >= och < är lite tydligare och mer explicit enligt mig i alla fall.

Om du är säker på att du ändå inte kan ha datum senare än idag, lägger den övre gränsen egentligen inte till någonting, och du skulle få samma resultat med bara:

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

Du vill inte använda trunc eller to_chardate_enter kolumn dock; att använda någon funktion förhindrar att ett index på den kolumnen används, vilket är anledningen till att din fråga med to_char var för långsam.



  1. Hur importerar jag XBRL-data till MySQL?

  2. Lagra urdu-karaktärer i MySQL

  3. MySQL-syntaxfel. Kan inte lösa det

  4. Importera CSV till MySQL