【问题标题】:Select records from one week previous in mysql在mysql中选择前一周的记录
【发布时间】:2011-11-15 13:02:50
【问题描述】:

我的数据具有日期 (Y-m-d H:i:s) 列(类型为日期时间)。我想选择输入日期前 1 周的所有记录(在下面的示例中:2011-09-17 00:00:00,但遇到了一些问题。这就是我所得到的:

SELECT * FROM emails WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), 1 week))

我做错了什么?谢谢

【问题讨论】:

    标签: mysql datetime date time


    【解决方案1】:

    我认为你在1 week前面缺少INTERVAL:

    SELECT *
    FROM emails
    WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), INTERVAL 1 week));
    

    这是我运行的一个查询,它适用于 DATE_SUB() 部分:

    SELECT *
    FROM wp_posts
    WHERE post_modified > DATE_SUB(CURDATE(), INTERVAL 4 WEEK);
    

    您可以使用负值进行“在给定日期前 N 周”查询,这样就可以了:

    SELECT *
    FROM wp_posts
    WHERE post_modified > DATE_SUB(CURDATE(), INTERVAL -1 WEEK);
    

    或者:

    SELECT *
    FROM emails
    WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), INTERVAL -1 week))
    

    【讨论】:

    • 谢谢。我使用了您输入的第一个代码(我需要在“1 周”之前添加“内部”。
    • 谢谢....我可以通过以下查询获取超过 2 周的帖子.... SELECT * FROM mypost WHERE (DATE(post_date) post_date ASC 订购
    【解决方案2】:

    试试这个,我喜欢坚持使用 DATE_ADD 并且只使用负值。

    SELECT * FROM emails WHERE date >= DATE_ADD('2011-09-17 00:00:00', INTERVAL -1 WEEK)
    

    【讨论】:

    • 这对我有用,但我必须用 NOW() 替换 datetime 值,以便我可以从执行查询的当前日期起 1 周获取数据
    【解决方案3】:
    SELECT * FROM wp_posts
    WHERE post_modified  
    BETWEEN SYSDATE() - INTERVAL 7 DAY
    AND SYSDATE();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多