我有一個表格,其年份和月份位於不同列中,我需要在3個月前和現在之間查找所有行。Mysql在日期和月份列之間獲取日期劃分
SELECT * FROM `table`
WHERE DATE(CONCAT(`year`, '-', `month`, '-01')) >=
DATE_FORMAT(NOW() - INTERVAL 3 MONTH, '%Y-%m-01')
它看起來很冗長,可能效率很低,因爲這是一個非常大的表。有一個更好的方法嗎?
我有一個表格,其年份和月份位於不同列中,我需要在3個月前和現在之間查找所有行。Mysql在日期和月份列之間獲取日期劃分
SELECT * FROM `table`
WHERE DATE(CONCAT(`year`, '-', `month`, '-01')) >=
DATE_FORMAT(NOW() - INTERVAL 3 MONTH, '%Y-%m-01')
它看起來很冗長,可能效率很低,因爲這是一個非常大的表。有一個更好的方法嗎?
沒有太多的優化時的日期存儲爲獨立的字段可以了,但我會重新寫你的查詢:
SELECT *
FROM `table`
WHERE STR_TO_DATE(`year`+ '-'+ `month` + '-01', '%Y-%m-%d') >= DATE_SUB(NOW(), INTERVAL 3 MONTH)
級聯呈現在year
和month
列無用索引。
有關的MySQL日期函數的詳細信息,請參閱:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
嗯,我有同樣的問題,我已經想通了什麼,我認爲是這種情況的解決方案。
SELECT *
FROM table
WHERE (month >= (month(curdate()) - 3 AND year >= year(curdate()))
AND (month >= month(curdate()) AND year >= year(curdate())))
假設您有名爲year和month的列。
而當你在一年內做它?例如。從2012年11月到2013年2月... – PeterB
你爲什麼說效率低下? – Coffee
如何將日期存儲爲日期? – bernie
是的,創建一個新列並將整個日期存儲在一列中。分開它有沒有目的。 –