MySQL 如何从当前日期在MySQL中获取过去两天的记录?
在许多Web应用程序中,常常需要从数据库中获取最近的数据记录。有时候需要两天之内的记录,有时候需要一周之内的记录,这些需求在各种场景中都非常常见。在本文中,我们将会讨论如何使用MySQL数据库获取过去两天内的数据记录。
阅读更多:MySQL 教程
获取当前日期和过去两天的日期
在处理日期的时候,我们需要清楚地知道MySQL数据库是如何处理日期的。在MySQL中,日期和时间类型是日期值的组合。日期是指年、月和日的组合,而时间指小时、分钟和秒的组合。以下是获取当前日期和过去两天的日期的MySQL函数:
NOW()
: 获取当前日期和时间DATE_SUB(NOW(), INTERVAL 2 DAY)
: 获取当前日期和过去两天的日期
使用下面的SQL语句可以获得当前日期和过去两天的日期:
SELECT NOW();
SELECT DATE_SUB(NOW(), INTERVAL 2 DAY);
这将会返回以下结果:
+---------------------+
| NOW() |
+---------------------+
| 2022-02-02 20:17:24 |
+---------------------+
+-----------------------------+
| DATE_SUB(NOW(), INTERVAL 2 DAY) |
+-----------------------------+
| 2022-01-31 20:17:24 |
+-----------------------------+
我们可以看到,第一个查询结果显示当前日期和时间,而第二个查询结果显示当前日期和过去两天的日期,也就是 2022-01-31
。
过滤日期
使用 WHERE
子句来过滤日期。在下面的例子中,我们查询 orders
表并且只返回过去两天内的数据记录:
SELECT * FROM orders
WHERE order_date >= DATE_SUB(NOW(), INTERVAL 2 DAY);
在这里我们用了 DATE_SUB()
函数来获取当前日期和过去两天的日期,并将其与 order_date
列进行比较。这将会返回最近两天内的所有订单。
使用 BETWEEN 运算符
我们可以使用 BETWEEN
运算符来获取两个时间标记之间的记录。下面的例子将会返回过去两天内的订单,可以满足 order_date
列 >= FROM_UNIXTIME(1643602692)
和 order_date
列 <= NOW()
的所有记录。
SELECT * FROM orders
WHERE order_date BETWEEN FROM_UNIXTIME(1643602692) AND NOW();
在这里我们用了 FROM_UNIXTIME()
函数,该函数将Unix时间戳转换为日期格式。
总结
在MySQL中获取过去两天内的数据记录非常简单。我们只需要使用MySQL内置的日期函数来获取当前日期和过去两天的日期,然后使用 WHERE
子句过滤日期或使用 BETWEEN
运算符获取过去两天内的记录即可。
参考链接:
- MySQL Date and Time Functions
- How to fetch records of last two days from MySQL?
- How to select the records timestamped in the last 48 hours?