如何返回从当前日期开始最近 7 天内添加到数据库的所有记录

Posted

技术标签:

【中文标题】如何返回从当前日期开始最近 7 天内添加到数据库的所有记录【英文标题】:How to return all records that were added to the database within the last 7 days from current date 【发布时间】:2015-10-24 08:37:25 【问题描述】:

我想返回从当前日期起最近 7 天内添加到数据库中的所有记录。

我有如下所示的活动日历表

CREATE TABLE events_calender (
  company_name varchar(30) DEFAULT NULL,
  reg_date timestamp 
);

我已经插入到下个月的事件,如下所示

Insert into events_calender values('Childerse Event' , '2013-10-24 18:19:03');
Insert into events_calender values('Womens Event' , '2013-10-27 18:19:03');
Insert into events_calender values('Mens Event' , '2013-10-30 18:19:03');
Insert into events_calender values('DOlls Event' , '2013-11-02 18:19:03');

我有一个网络服务,我需要为它提供本周的事件(从当前时间起 7 天)

我尝试了以下查询,

SELECT  * from events_calender
WHERE   reg_date BETWEEN CURDATE() - INTERVAL 7 DAY AND CURDATE()

但它没有给出任何结果。

您能告诉我导致错误的原因可能是什么吗??

http://sqlfiddle.com/#!9/d3d41/2

谢谢,周末愉快。

【问题讨论】:

试试这个:reg_date BETWEEN DATE(DATE_SUB(NOW(), INTERVAL 7 DAY)) AND DATE (NOW()) 您的数据几乎可以追溯到两年前 - 查询不返回任何数据也就不足为奇了... 感谢仍然没有运气,SELECT * from events_calender WHERE reg_date BETWEEN DATE(DATE_SUB(NOW(), INTERVAL 7 DAY)) AND DATE (NOW()) 你的年份是 2013 年,请检查。 sqlfiddle.com/#!9/25bd0/3 【参考方案1】:

试试这个:use DATE_ADD 首先更新数据,即with the 7 day range data。然后使用下面的sql,它应该返回很少的记录。

CREATE TABLE events_calender (
  company_name varchar(30) DEFAULT NULL,
  reg_date timestamp 
);



Insert into events_calender values('Childerse Event' , '2015-10-24 18:19:03');
Insert into events_calender values('Womens Event' , '2015-10-21 18:19:03');
Insert into events_calender values('Mens Event' , '2015-10-27 18:19:03');
Insert into events_calender values('DOlls Event' , '2015-11-29 18:19:03');

sql:

SELECT  * from events_calender
WHERE   reg_date BETWEEN  DATE( NOW() ) AND DATE( DATE_ADD( NOW() , INTERVAL 7 DAY ) ) 

【讨论】:

但为什么它会返回旧记录(10 月 20 日) 因为它介于 10 月 24 日的 7 天范围内。 从当天开始,是否可以返回7天即将发生的事件??(不是之前的) 但您的问题是过去 7 天。 很抱歉造成混乱,但实际上我想要从当天到 7 天。【参考方案2】:

您的查询是正确的,但插入命令有问题。您输入的日期时间错误,表示这些日期之间不存在数据。

Insert into events_calender values('Childerse Event' , '2015-10-23 12:00:00');

Insert into events_calender values('Womens Event' , '2015-10-22 12:00:00');

Insert into events_calender values('Mens Event' , '2015-10-21 12:00:00');

Insert into events_calender values('DOlls Event' , '2015-10-17 12:00:00');

【讨论】:

以上是关于如何返回从当前日期开始最近 7 天内添加到数据库的所有记录的主要内容,如果未能解决你的问题,请参考以下文章

如何从当前日期 PHP 获取最近 7 周、7 个月的日期范围?

将超过 7 天的数据插入分区 BigQuery 表

如何在SQL查询中编写一个日期范围的代码,使其从当前日期向前追溯3周,并从当前日期向前追溯1周。

如何从 col2 获得在 col1 7 天内具有相同类别的最早日期?

查询以返回连续 X 天内值的最低 SUM

用js实现:输入日期,判断输入日期是不是在当前日期第二天起的7天内,如果没有,提示正确的日期区间