我正在尝试选择表中最近6个月的条目,我有一个名为datetime的列,这是一个日期时间的mysql格式。
我已经看过很多使用区间和其他方法的方法 - 我应该使用哪种方法?感谢
答案 0 :(得分:100)
使用DATE_SUB
.... where yourdate_column > DATE_SUB(now(), INTERVAL 6 MONTH)
答案 1 :(得分:11)
试试这个:
select *
from table
where your_dt_field >= date_sub(now(), interval 6 month);
查询读取:给我table
中的所有条目,其中与输入日期对应的字段超过6个月。
答案 2 :(得分:2)
我尝试@ user319198回答显示最近6个月(总和)销售,它工作但我在最老的月份面临一个问题,我没有得到整个月的销售额。结果从该月当天的当天开始。
如果有兴趣的话,我想分享我的解决方案: -
yourdate_column > DATE_SUB(now(), INTERVAL 7 MONTH)
limit 6
如果有人能为我的案例J提供更好的解决方案,也会很棒。
答案 3 :(得分:1)
对我来说,这就像是将其与MariaDB一起使用时的解决方案,请看一下WHERE子句:
SELECT MONTH(yourTimestampOrDateColumn) AS MONTH, USER, ActionID, COUNT(*) AS TOTAL_ACTIONS, ROUND(SUM(totalpoints)) AS TOTAL_PTS
FROM MyTable
WHERE MONTH(yourTimestampOrDateColumn) BETWEEN MONTH(CURDATE() - INTERVAL 6 MONTH) AND MONTH(CURDATE())
GROUP BY MONTH;
在图像上,我们仅看到用户在数据库中记录了实际数据的月份(因此仅显示4个月而不是6个月)。
因此,本月是10月(10月),而6个月前是4月(4月),因此查询将查找该间隔(从4到10)。
答案 4 :(得分:1)
您还可以使用TIMESTAMPDIFF
TIMESTAMPDIFF(MONTH, your_date_column, now()) <= 6 )
答案 5 :(得分:0)
您可以通过从interval of 6 month
中减去CURDATE()
来获取最近六个月的数据( CURDATE()
是MySQL函数,返回今天的日期)。
SELECT * FROM table
WHERE your_date_field >= CURDATE() - INTERVAL 6 MONTH;
或者您可以如下使用MySQL的BETWEEN
运算符:
SELECT * FROM table
WHERE your_date_field BETWEEN CURDATE() - INTERVAL 6 MONTH AND CURDATE();