Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle Select Where Date Between Today

Ако приемем date_enter е DATE поле:

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

trunc() функцията премахва частта от времето по подразбиране, така че trunc(sysdate) ви дава полунощ тази сутрин.

Ако особено искате да се придържате към between и имате DATE не е TIMESTAMP , можете да направите:

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

between включва, така че ако не си вземете втора почивка, потенциално бихте взели записи точно от полунощ тази вечер; така че това генерира времето 23:59:59, което сте търсили в първоначалната си заявка. Но използвайки >= и < според мен е малко по-ясен и ясен.

Ако сте сигурни, че така или иначе не можете да имате дати по-късно от днес, горната граница всъщност не добавя нищо и ще получите същия резултат само с:

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

Не искате да използвате trunc или to_char на date_enter колона все пак; използването на която и да е функция предотвратява използването на индекс в тази колона, поради което заявката ви с to_char беше твърде бавен.



  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

  2. Oracle SQL как да напиша sql израз, който проверява дали потребителят е в моята мрежа (т.е. приятели или приятел на приятели)

  3. Как да форматирате числа в научна нотация в Oracle

  4. Oracle последователност, но след това в MS SQL Server

  5. Oracle Data Access FileNotFound:Oracle.DataAccess.Common.Configuration.Section.xsd