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
].