如何使用MySQL从新闻表中选择最近6个月

时间:2012-01-20 12:19:00

标签: mysql sql

我正在尝试选择表中最近6个月的条目,我有一个名为datetime的列,这是一个日期时间的mysql格式。

我已经看过很多使用区间和其他方法的方法 - 我应该使用哪种方法?感谢

6 个答案:

答案 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;

queryResults

在图像上,我们仅看到用户在数据库中记录了实际数据的月份(因此仅显示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();