Giả sử date_enter
là DATE
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 >=
và <
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.