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

Truy vấn MySQL trong tuần của tuần hiện tại bắt đầu vào thứ Năm, kết thúc vào thứ Tư

Bạn có thể tận dụng WEEKDAY() trả về một số đại diện cho ngày trong tuần (0 =Thứ Hai, 6 =Chủ Nhật) và một số phép toán đơn giản để viết lại truy vấn này.

Trừ ngày trong tuần bạn muốn tuần bắt đầu (trong trường hợp của bạn là 4 =Thứ Năm) từ ngày đã chọn, thêm 7 và lấy phần còn lại từ 7. Điều này sẽ cung cấp cho bạn số ngày cần trừ để bắt đầu phạm vi của bạn.

Một logic tương tự được áp dụng để tính toán ngày kết thúc của phạm vi.

SELECT * 
FROM transactions 
WHERE DATE(transactionDate)
    BETWEEN DATE_SUB(DATE(NOW()), INTERVAL (WEEKDAY(NOW()) - 4 + 7) % 7 DAY)
        AND DATE_ADD(DATE(NOW()), INTERVAL 6 - (WEEKDAY(NOW()) - 4 + 7) % 7 DAY)
ORDER BY transactionDate DESC;

Đối với một ngày bắt đầu khác, hãy thay thế ngày trong tuần cho 4 trong truy 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. Cách tính thứ hạng trong MySQL

  2. Sphinx và ý bạn là ...? đề xuất ý tưởng. Nó có hoạt động không?

  3. lưu trữ số tiền trong mysql

  4. Làm thế nào để cố tình khóa một hàng MySQL mà ngay cả SELECT sẽ trả về một lỗi?

  5. PDOException "không thể tìm thấy trình điều khiển"