MySQL 如何从当前日期获取过去两天的记录
要获取从当前日期开始的过去几天的记录,您需要使用DATE_SUB()函数。我们还将使用NOW()函数来获取当前日期。以下是相应的语法:
SELECT *FROM yourTableName WHERE yourDateTimeColumnName BETWEEN DATE_SUB(DATE(NOW()), INTERVAL 2 DAY) AND DATE_SUB(DATE(NOW()), INTERVAL 1 DAY);
让我们看一个例子:
mysql> create table get2daysAgoDemo
- > (
- > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
- > Name varchar(20),
- > PostDateTime datetime
- > );
查询已影响的行数为0(用时1.70秒)
使用插入命令在表中插入一些记录。
查询如下所示:
mysql> insert into get2daysAgoDemo(Name,PostDateTime) values('Larry',now());
查询已影响的行数为1(用时0.68秒)
mysql> insert into get2daysAgoDemo(Name,PostDateTime) values('Mike','2019-02-13');
查询已影响的行数为1(用时0.12秒)
mysql> insert into get2daysAgoDemo(Name,PostDateTime) values('Sam','2019-01-31');
查询已影响的行数为1(用时0.15秒)
mysql> insert into get2daysAgoDemo(Name,PostDateTime) values('Bob','2019-02-14');
查询已影响的行数为1(用时0.29秒)
mysql> insert into get2daysAgoDemo(Name,PostDateTime) values('David','2019-02-12');
查询已影响的行数为1(用时0.21秒)
mysql> insert into get2daysAgoDemo(Name,PostDateTime) values('Carol','2019-02-11');
查询已影响的行数为1(用时0.22秒)
使用select语句显示表中的所有记录。
查询如下所示:
mysql> select *from get2daysAgoDemo;
以下是输出结果:
+----+-------+---------------------+
| Id | Name | PostDateTime |
+----+-------+---------------------+
| 1 | Larry | 2019-02-15 21:47:10 |
| 2 | Mike | 2019-02-13 00:00:00 |
| 3 | Sam | 2019-01-31 00:00:00 |
| 4 | Bob | 2019-02-14 00:00:00 |
| 5 | David | 2019-02-12 00:00:00 |
| 6 | Carol | 2019-02-11 00:00:00 |
+----+-------+---------------------+
共6行,总用时0.00秒
以下是获取过去两天记录的查询。假设当前日期是2019年2月15日。
mysql> select *from get2daysAgoDemo
- > where PostDateTime between DATE_SUB(DATE(NOW()), INTERVAL 2 DAY)
- > AND DATE_SUB(DATE(NOW()), INTERVAL 1 DAY);
以下是输出结果,显示了从上次日期开始的过去两天的记录,即2月13日和14日,因为当前日期是2月15日:
+----+------+---------------------+
| Id | Name | PostDateTime |
+----+------+---------------------+
| 2 | Mike | 2019-02-13 00:00:00 |
| 4 | Bob | 2019-02-14 00:00:00 |
+----+------+---------------------+
共2行,总用时0.01秒
阅读更多:MySQL 教程
极客教程