如何返回从当前日期开始最近 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 个月的日期范围?
如何在SQL查询中编写一个日期范围的代码,使其从当前日期向前追溯3周,并从当前日期向前追溯1周。