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

Từ dấu thời gian trong SQL, chọn các bản ghi từ hôm nay, hôm qua, tuần này, tháng này và giữa hai ngày php mysql

Nếu bạn chỉ chọn theo ngày, hãy tính toán dựa trên CURDATE (chỉ trả về ngày tháng) thay vì NOW (trả về ngày và giờ). Những ví dụ này sẽ bắt kịp mọi thời điểm trong phạm vi ngày:

  • Hôm nay:WHERE timestamp >= CURDATE()
  • Hôm qua:WHERE timestamp >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND timestamp < CURDATE()
  • Tháng này:WHERE timestamp >= DATE_SUB(CURDATE(), INTERVAL DAYOFMONTH(CURDATE())-1 DAY)
  • Giữa hai ngày 3 tháng 6 năm 2013 và ngày 7 tháng 6 năm 2013 (lưu ý cách ngày kết thúc được chỉ định là ngày 8 tháng 6 chứ không phải ngày 7 tháng 6):WHERE timestamp >= '2013-06-03' AND timestamp < '2013-06-08'

"Tuần này" phụ thuộc vào ngày bạn bắt đầu tuần của mình; Tôi sẽ để lại điều đó cho bạn. Bạn có thể sử dụng DAYOFWEEK hàm điều chỉnh CURDATE() đến phạm vi thích hợp.

Phụ lục :Loại cột của OP là INTEGER , lưu trữ dấu thời gian UNIX và câu trả lời của tôi giả định loại cột là TIMESTAMP . Dưới đây là cách thực hiện tất cả những điều tương tự với giá trị dấu thời gian UNIX và vẫn duy trì tối ưu hóa nếu cột được lập chỉ mục (như các câu trả lời ở trên sẽ thực hiện nếu TIMESTAMP cột được lập chỉ mục) ...

Về cơ bản, giải pháp là chỉ đặt ngày bắt đầu và / hoặc kết thúc trong UNIX_TIMESTAMP chức năng:

  • Hôm nay:WHERE timestamp >= UNIX_TIMESTAMP(CURDATE())
  • Hôm qua:WHERE timestamp >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AND timestamp < UNIX_TIMESTAMP(CURDATE())
  • Tháng này:WHERE timestamp >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL DAYOFMONTH(CURDATE())-1 DAY))
  • Giữa hai ngày 3 tháng 6 năm 2013 và ngày 7 tháng 6 năm 2013 (lưu ý cách ngày kết thúc được chỉ định là ngày 8 tháng 6 chứ không phải ngày 7 tháng 6):WHERE timestamp >= UNIX_TIMESTAMP('2013-06-03') AND timestamp < UNIX_TIMESTAMP('2013-06-08')



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lưu hình ảnh trong MySQL từ Java

  2. Dấu thời gian không có thay đổi khi cập nhật

  3. Nhóm theo ngày từ dấu thời gian

  4. sử dụng tham gia ở đâu và bên trong trong mysql

  5. Thiết lập Macports mysql5 dưới Snow Leopard