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

Oracle SQL so sánh ngày tháng

Trong Oracle, một DATE luôn luôn có một thành phần thời gian. Máy khách của bạn có thể hiển thị hoặc không hiển thị thành phần thời gian, nhưng nó vẫn ở đó khi bạn cố gắng thực hiện một phép so sánh bình đẳng. Bạn cũng luôn muốn so sánh ngày với ngày thay vì chuỗi sử dụng NLS_DATE_FORMAT của phiên hiện tại để thực hiện các chuyển đổi ngầm, do đó làm cho chúng trở nên khá mong manh. THat sẽ liên quan đến các ký tự ngày ANSI hoặc to_date rõ ràng cuộc gọi

Bạn có thể sử dụng TRUNC hàm để cắt ngắn DATE đến nửa đêm

SELECT *
  FROM porder
 WHERE trunc(odate) = date '2013-10-04'

Hoặc bạn có thể thực hiện so sánh phạm vi (sẽ hiệu quả hơn nếu bạn có thể hưởng lợi từ chỉ mục trên odate )

SELECT *
  FROM porder
 WHERE odate >= to_date( '04-Oct-2013', 'DD-Mon-YYYY' )
   AND odate <  to_date( '05-Oct-2013', 'DD-Mon-YYYY' );



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00923:Không tìm thấy từ khóa FROM ở nơi mong đợi - SQLDeveloper

  2. Sống sót sau một cuộc kiểm tra Oracle

  3. SQL Developer 4.0 được phát hành

  4. ngày dưới dạng tên cột

  5. CẬP NHẬT TRƯỜNG HỢP NESTED