MySql获取日期值之间的行

时间:2009-08-26 11:45:25

标签: sql mysql date

我正在执行以下查询并返回所有行,无论日期如何:

 SELECT DISTINCT p.name, p.category, u.f_name, t.name
 FROM   (
        prizes p, tags t, results r
        )
 LEFT JOIN
        users u
 ON     (r.user_id = u.id)
 LEFT JOIN
        f_tag_lookup tl
 ON     (tl.tag_id = t.id)
 WHERE  r.tag_id = t.id
        AND r.date BETWEEN concat(date_format(LAST_DAY(now() - interval 1 month), '%Y-%m-'),'01') AND last_day(NOW() - INTERVAL 1 MONTH)

r.date是一个日期时间字段。有三行包含上个月的日期,三行包含本月的日期,但我收到所有行?

非常感谢任何指针。我想在上个月的第一天和最后一天之间返回结果,即7月的所有结果。

感谢,

2 个答案:

答案 0 :(得分:3)

你能不能只使用month()日期函数?

e.g。使用month(date)= month(now())作为过滤器。

如果你有超过一年的数据,你还需要在年(日期)=年(now())上匹配。

我不确定表现,但我这样表达它似乎更具可读性。

SELECT DISTINCT p.name, p.category, u.f_name, t.name
FROM (prizes p, tags t, results r)
LEFT JOIN users u ON (r.user_id = u.id)
LEFT JOIN f_tag_lookup tl ON (tl.tag_id = t.id)
WHERE r.tag_id = t.id AND 
      month(r.date) = month(now()) AND 
      year(r.date) = year(now()) 

答案 1 :(得分:0)

想通了。有关日期的SQL很好,但JOINS错了。谢谢你的回复。