Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle chọn ngày giữa hôm nay

Giả sử date_enterDATE lĩnh vực:

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

trunc() hàm loại bỏ phần thời gian theo mặc định, vì vậy trunc(sysdate) cho bạn nửa đêm sáng nay.

Nếu bạn đặc biệt muốn gắn bó với between và bạn có DATE không phải là TIMESTAMP , bạn có thể làm:

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

between là bao gồm, vì vậy nếu bạn không nghỉ một giây thì bạn có khả năng nhận hồ sơ từ chính xác nửa đêm tối nay; vì vậy điều này tạo ra 23:59:59 thời gian bạn đang tìm kiếm trong truy vấn ban đầu của mình. Nhưng sử dụng >=< rõ ràng và rõ ràng hơn một chút, theo ý kiến ​​của tôi.

Nếu bạn chắc chắn rằng bạn không thể có ngày muộn hơn hôm nay, thì giới hạn trên không thực sự thêm bất cứ điều gì và bạn sẽ nhận được kết quả tương tự chỉ với:

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

Bạn không muốn sử dụng trunc hoặc to_char vào date_enter cột dù; việc sử dụng bất kỳ hàm nào sẽ ngăn không cho chỉ mục trên cột đó được sử dụng, đó là lý do tại sao truy vấn của bạn với to_char quá chậm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xác định Oracle null ==null

  2. Nhẹ trong một vỏ sò

  3. Python 3.3 - Kết nối với cơ sở dữ liệu Oracle

  4. chuyển cột sang hàng oracle

  5. Cố gắng hiểu bản chất trong một sơ đồ mối quan hệ thực thể?