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

Laravel Ngày so sánh thường xuyên từ trường datetime

Laravel 4+ cung cấp cho bạn các phương thức sau:whereDay() , whereMonth() , whereYear() ( # 3946 ) và whereDate() ( # 6879 ).

Họ thực hiện SQL DATE() làm việc cho bạn và quản lý sự khác biệt của SQLite.

Kết quả của bạn có thể đạt được như vậy:

->whereDate('date', '<=', '2014-07-10')

Để biết thêm ví dụ, hãy xem thông báo đầu tiên của # 3946 bài viết hàng ngày của Laravel này .


Cập nhật: Mặc dù phương pháp trên rất tiện lợi, theo ghi nhận của Arth, nó không hiệu quả trên các tập dữ liệu lớn, vì DATE() Hàm SQL phải được áp dụng trên mỗi bản ghi, do đó loại bỏ chỉ mục có thể có.

Dưới đây là một số cách để so sánh (nhưng vui lòng đọc ghi chú bên dưới):

->where('date', '<=', '2014-07-10 23:59:59')

->where('date', '<', '2014-07-11')

// '2014-07-11'
$dayAfter = (new DateTime('2014-07-10'))->modify('+1 day')->format('Y-m-d');

->where('date', '<', $dayAfter)

Ghi chú:

  • 23:59:59 không sao (hiện tại) vì độ chính xác 1 giây, nhưng hãy xem bài viết này: 23:59:59 không phải là ngày kết thúc. Không, thực sự!
  • Hãy ghi nhớ trường hợp "zero date" ("0000-00-00 00:00:00"). Mặc dù vậy, nên tránh những "ngày không" này, chúng là nguồn gốc của rất nhiều vấn đề. Tốt hơn nên đặt trường này ở trạng thái vô hiệu nếu cầ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. Yii2:Kartik Gridview tổng của một cột ở chân trang

  2. Lỗi MySQL 8.0.11 kết nối với caching_sha2_password, không thể tìm thấy mô-đun được chỉ định

  3. Không thể kết nối với máy chủ MySQL lỗi 111

  4. công cụ giám sát truy vấn mysql

  5. Truy vấn cập nhật SQL với mệnh đề nhóm theo