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

SQL:Ở đâu giữa hai ngày không có năm?

Cách tốt nhất để giải quyết vấn đề này là chuyển ngày của bạn thành một số từ 0 đến 365 tương ứng với ngày trong năm. Sau đó, chỉ cần chọn những ngày mà mức chênh lệch này nhỏ hơn 14 sẽ cho bạn khoảng thời gian hai tuần.

Điều đó sẽ bị phá vỡ vào đầu hoặc cuối năm. Nhưng số học mô-đun đơn giản cho bạn câu trả lời.

May mắn thay, MySQL có DAYOFYEAR(date) , vì vậy nó không quá phức tạp:

SELECT * FROM tbl t
WHERE 
  MOD(DAYOFYEAR(currdate) - DAYOFYEAR(t.the_date) + 365, 365) <= 14
  OR MOD(DAYOFYEAR(t.the_date) - DAYOFYEAR(currdate) + 365, 365) <= 14

+ 365 bổ sung đó là cần thiết vì MOD của MySQL sẽ trả về số âm.

Câu trả lời này không giải thích chính xác cho các năm nhuận. Nếu năm hiện tại không phải là năm nhuận và thời hạn diễn ra trong vòng 14 ngày kể từ ngày cuối năm, thì bạn sẽ bỏ lỡ một ngày trong tháng Giêng mà lẽ ra bạn phải bao gồm. Nếu bạn quan tâm đến điều đó, thì bạn nên thay thế 365 với [the number of days in the year - 1 ].



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo chế độ xem với cột num_rows - MySQL

  2. Hệ thống nhắn tin trong php mysql

  3. Làm cách nào để xuất cơ sở dữ liệu SQL Server sang MySQL?

  4. Áp dụng quyền đối với cột cho bảng qua trình kích hoạt

  5. MySQL:Khi nào thì Flush Privileges trong MySQL thực sự cần thiết?