使用unixtimestamp查找上个月的所有mysql行

时间:2015-11-01 20:13:58

标签: mysql

我正在尝试找到一种更好的方法来选择上个月创建的所有行。目前我只回到x天,但我想让它在每个月的第一天运行,并且不想继续调整它。

基本上,我只是希望它从月份是上个月的“日期”字段中进行选择。

这是我目前的sql:

SELECT a.*
FROM (SELECT a.article_id, a.date, a.tagline_image, a.article_top_image_filename, a.title, a.tagline, a.views, c.category_id
    FROM 
        articles a
    LEFT JOIN 
        `article_category_reference` c ON a.article_id = c.article_id
    WHERE 
        a.date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 33 DAY)) AND c.category_id NOT IN (63) AND a.active = 1 group by `a`.`article_id`
    ORDER BY 
        a.views DESC
    LIMIT 30
     ) a
ORDER BY views ASC

2 个答案:

答案 0 :(得分:3)

试试吗?

WHERE MONTH(FROM_UNIXTIME(a.date)) = MONTH(DATE_SUB(NOW(), INTERVAL 1 MONTH))

答案 1 :(得分:0)

一个好的策略是通过计算前一个月的最后一天然后再添加1天来获取上个月的第一天:

<div class="parent">
  <span class="ellipsis">sadkljasjkfdhkjlhas-qdasfqewrwqe.pdf</span>  
  <div class="icons-right">
    <a href="#"><img src="edit-icon.gif"></a>
    <a href="#"><img src="delete-icon.gif"></a>
  </div>                                                                     
</div> 

<div class="parent">
  <span class="ellipsis">terribly-terribly-long-filename.doc</span>
  <div class="icons-right">
    <a href="#"><img src="edit-icon.gif"></a>
    <a href="#"><img src="delete-icon.gif"></a>
  </div>                                                                      
</div>