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

Truy vấn Mysql Datediff

Có vẻ như bạn đang cố gắng thực hiện việc này:

WHERE specific_date < (NOW() + 5 days)

Trước hết, hãy suy nghĩ kỹ về các trường hợp ranh giới. Các trường hợp ranh giới này có thể cắn mắt cá chân của bạn trong SQL. Bạn có thực sự muốn

WHERE specific_date <= (NOW() + 5 days)

Thực hiện specific_date của bạn cột thời gian chỉ chứa ngày (đó là những ngày có thời gian bằng nửa đêm) hay chúng chứa ngày và giờ? Nếu bạn sắp đạt được kết quả mong muốn, bạn cần phải cẩn thận về những chi tiết đó.

Ở bất kỳ mức độ nào, hãy thử điều này:

WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)

Đây là một cách tốt để thực hiện việc tra cứu như vậy. Giá trị cột đứng một mình ở một bên của vị từ bất đẳng thức (<= ) để mySQL có thể thực hiện quét phạm vi chỉ mục nếu bạn có chỉ mục trên cột.

Số học ngày tháng trong MySQL khá linh hoạt. Bạn có thể làm

   NOW() + INTERVAL 10 SECOND
   NOW() - INTERVAL 2 MINUTE
   NOW() + INTERVAL 4 HOUR
   CURDATE() - INTERVAL 1 WEEK /* midnight one week ago */
   LAST_DAY(NOW()) + INTERVAL 1 DAY - INTERVAL 1 MONTH  /*first day of present month*/
   NOW() - INTERVAL 1 QUARTER
   CURDATE() - INTERVAL 5 YEAR

và vân vân.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sửa lỗi Quyền truy cập bị từ chối cho người dùng 'root' @ 'localhost' cho phpMyAdmin

  2. Trình cài đặt MySQL Popup Mysql lạ đang chạy chế độ cộng đồng

  3. Xếp hạng top-N của MySQL và tổng hợp phần còn lại của cùng một nhóm

  4. Mysql 5.7.20:Không thể tạo giá trị JSON từ một chuỗi có BỘ CHARACTER 'nhị phân'

  5. Truy cập Cơ sở dữ liệu MySql từ tệp PHP trên máy chủ cục bộ