RT,我表的结果如下
id     uid       pid     date          serverid  
1      111       000     2011-08-18      3
2      112       001     2011-08-18      3
3      113       002     2011-08-18      3
...需求是查询上上周(2周前)的所有pid
和查询上上月(6月)的所有的pid请问该如何写?

解决方案 »

  1.   

    -- 去Google: mysql 日期、时间函数! 自己解决撒!
      

  2.   

    - -!自己写好了,发现有BUG呜呜
      

  3.   

    select pid from tbname where `date`<adddate(now(),interval -2 week);
    select pid from tbname where month(`date`)=6 and year(`date`)=2011;
      

  4.   

    where date between '' and ''
      

  5.   

    SELECT * FROM TT WHERE `date`=CURDATE()-INTERVAL 6 MONTH OR `date`=CURDATE()-INTERVAL 2 WEEK
      

  6.   

    -- 如果你是要求 [本周的第一天] 的 [前两个星期] 的话,这样求:mysql> SELECT DATE_SUB(DATE_SUB(CURDATE(), INTERVAL DAYOFWEEK(CURDATE())-1 DAY), INTERVAL 2 WEEK);
    +-------------------------------------------------------------------------------------+
    | DATE_SUB(DATE_SUB(CURDATE(), INTERVAL DAYOFWEEK(CURDATE())-1 DAY), INTERVAL 2 WEEK) |
    +-------------------------------------------------------------------------------------+
    | 2011-07-31                                                                          |
    +-------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
      

  7.   

    我的方法是
    select pid,count(pid) as count from active_log where year(date)=year(date_add("'.$thisdate.'",interval -1 month)) and month(date)=month(date_add("'.$thisdate.'",interval -1 month))
    可行?
      

  8.   

     SELECT pid
       FROM table a
    (
     SELECT x.start, x.start + INTERVAL 6 DAY AS end
       FROM
    (SELECT (CURDATE() - INTERVAL 2 WEEK - INTERVAL DAYOFWEEK(CURDATE()) - 1 DAY) AS start) x
    ) b
      WHERE a.date BETWEEN x.start AND x.end
     SELECT pid
       FROM table a
    (
     SELECT x.start, x.start + INTERVAL 1 MONTH - INTERVAL 1 DAY AS end
       FROM
    (SELECT (CURDATE() - INTERVAL 2 MONTH - INTERVAL DAYOFMONTH(CURDATE()) - 1 DAY) AS start) x
    ) b
      WHERE a.date BETWEEN x.start AND x.end
      

  9.   

    select * from 我表 where YEARWEEK(date)=YEARWEEK(curdate()-interval 2 week);select * from 我表 where DATE_FORMAT(date,'%Y%m)=YEARWEEK(DATE_FORMAT(curdate()-interval 2 month,'%Y%m));