【问题标题】:sql query to fetch the records of next 30 dayssql查询获取未来30天的记录
【发布时间】:2015-01-16 04:38:53
【问题描述】:

这是我的问题,我想从表中获取接下来 30 天的记录。我的表中有一个字段。例如:在我的表中,我有resource_date,在此列中,我有许多记录,从2013-02-052015-10-10。说,如果我今天登录网站(今天的日期是-16/01/2015,它应该获取接下来 15 天的记录,依此类推)。这该怎么做?提前致谢

【问题讨论】:

  • 你在使用 MySQL 吗?
  • resource_date是什么类型的字段?是DATETIME 字段吗?
  • @Leo。是的Mysql。是的,这是一个 DATETIME 字段
  • 参考:stackoverflow.com/questions/12677707/… 也可以设置日期格式..

标签: mysql


【解决方案1】:

一种方法

SELECT * 
  FROM table1
 WHERE resource_date >= CURDATE() + INTERVAL 1 DAY -- skip today
   AND resource_date < CURDATE() + INTERVAL 17 DAY -- 15 days starting tomorrow

这是一个SQLFiddle演示

【讨论】:

    【解决方案2】:

    在 MySQL 中,您可以使用NOW() 函数获取当前的DATETIME,并使用INTERVAL 关键字获取时间间隔。

    因此,要获取未来 30 天内resource_date 所在的记录,您可以使用:

    SELECT *
     FROM `my_table_name`
    WHERE `resource_date` >= NOW()
      AND `resource_date` < NOW() + INTERVAL 1 MONTH
        ;
    

    在实践中,您应该很少使用SELECT *,并且您应该考虑在此查询中添加LIMIT,以防止您的应用程序返回“太大”的结果集。

    【讨论】:

    • 没问题。如果此答案解决了问题,请不要忘记点击“接受”复选标记。
    • @YogeshNaik FYI 如果您需要从上午 0 点到下午 12 点的结果集,则此查询不好,因为它可能会留下一些前导行并获取额外的尾随行。
    • @peterm。是的,但我追踪了它。谢谢
    【解决方案3】:

    http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

    ...
    WHERE
    'resource_date'> NOW() AND
    'resource_date'< DATE_ADD(NOW(), INTERVAL 31 DAY);
    

    小心,我认为 now() 会做几分钟和几小时,所以你会错过一天的一部分时间。

    【讨论】:

      【解决方案4】:
      WHERE resource_date >= CURDATE() AND resource_date <= DATE_ADD(CURDATE(), interval 15 DAY)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-27
        • 1970-01-01
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-15
        • 2013-02-24
        相关资源
        最近更新 更多