首页 > 解决方案 > 要求在 2 天内找出日期

问题描述

如何编写sql查询以找出距离当前日期还有 2 天。在 php 中,这可以通过以下方式完成:

$res['end_date'] - time () < 86400 * 3;

我怎么能在 1sql次查询后做同样的事情,好或更好,只有 2 天,如果更少,它不会解决,好吧,如果它解决了,没关系。

升级版:

有必要编写一个sql查询,仅选择那些在到期前还有 2几天的记录end_date

类型int用于字段 end_date,并通过time ()函数存储在php.

不能组成一个WHERE子句。

标签: phpmysqlsqldatetimedate-arithmetic

解决方案


假设您正在存储一个纪元时间戳(自 1970 年 1 月 1 日以来的秒数),我建议:

select *
from mytable
where end_date >= unix_timestamp() and end_date < unix_timestamp() + 2 * 24 * 60 * 60

unix_timestamp()给你当前的时代。您可以使用简单的数学来增加两天。

这种方法的好处是它直接过滤存储值,因此这可以利用索引的优势end_date- 而不是将时间戳转换为日期,这需要在过滤发生之前转换整个列。所以这样效率更高。

您可以根据自己的喜好调整不等式。我使用了一个半开区间(包括下限和不包括上限),这是一种广泛使用的方法。


推荐阅读