我有一个表格,其年份和月份位于不同列中,我需要在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
是的,创建一个新列并将整个日期存储在一列中。分开它有没有目的。 –