[英]Mysql how to filter results from last CALENDAR month (not last month)
我嘗試從 MySQL 中為此/上一個和下一個日歷月選擇數據。 有幾個類似的帖子,但沒有一個是針對 1 月與去年或 12 月與下一年的。 我知道我可以在 PHP 中圍繞 SQL 做到這一點,但也許有人有很好的方法來解決 SQL 中的問題。 我試過用 MOD() 但這帶來了多年的問題。 即前一個日歷月避免 1 月為 0
SELECT * FROM tbl_reservations WHERE ( (MONTH(tbl_reservations.start) = MOD((MONTH(NOW()) +11 ), 12)) AND ( YEAR(tbl_reservations.start) = YEAR(NOW()) ) )
有任何想法嗎? 謝謝。
我認為這很容易。 對於最后一個日歷月:
where extract(year_month from r.start) = extract(year_month from now() - interval 1 month)
您可以在下個月使用類似的邏輯。
以上不是索引友好的。 索引友好的版本比較麻煩:
where r.start < curdate() - interval (1 - day(curdate())) day and
r.start >= (curdate() - interval (1 - day(curdate())) day) + interval 1 month
這通過減去(1 - day(curdate()))
天來獲得該月的第一天。 然后使用日期操作和比較來獲取上個月的日期。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.