php - 要求在 2 天内找出日期
问题描述
如何编写sql
查询以找出距离当前日期还有 2 天。在 php 中,这可以通过以下方式完成:
$res['end_date'] - time () < 86400 * 3;
我怎么能在 1sql
次查询后做同样的事情,好或更好,只有 2 天,如果更少,它不会解决,好吧,如果它解决了,没关系。
升级版:
有必要编写一个sql
查询,仅选择那些在到期前还有 2
几天的记录end_date
类型int
用于字段 end_date
,并通过time ()
函数存储在php
.
不能组成一个WHERE
子句。
解决方案
假设您正在存储一个纪元时间戳(自 1970 年 1 月 1 日以来的秒数),我建议:
select *
from mytable
where end_date >= unix_timestamp() and end_date < unix_timestamp() + 2 * 24 * 60 * 60
unix_timestamp()
给你当前的时代。您可以使用简单的数学来增加两天。
这种方法的好处是它直接过滤存储值,因此这可以利用索引的优势end_date
- 而不是将时间戳转换为日期,这需要在过滤发生之前转换整个列。所以这样效率更高。
您可以根据自己的喜好调整不等式。我使用了一个半开区间(包括下限和不包括上限),这是一种广泛使用的方法。
推荐阅读
- python - 将 JSON 嵌套到 Pandas DataFrames
- javascript - 在我的模态对话框中打开一个外部 URL 页面并捕获一些正在提交给父 React 的信息
- jquery - kendo ui jquery 打印标签
- kubernetes - 谷歌云平台使用 Kubernetes 创建管道并替换相同的容器
- arduino-uno - 称重传感器 Arduino HX711 库未启动
- r - 从包 gapfill 返回的图像与光栅图不同
- c - 带参数的函数调用如何在 C 中工作?
- reactjs - 关于更新状态和钩子的问题(可能与打字稿有关)
- php - 安装TYPO3 v10.1,Apache2说需要PHP >=7.2 - <=7.4,但是7.3是按照php -v安装的
- generics - 如何实现 From
> 为 Foo