按日期过滤 SQL 结果
Posted
技术标签:
【中文标题】按日期过滤 SQL 结果【英文标题】:Filtering SQL results by date 【发布时间】:2020-09-22 09:39:37 【问题描述】:这是我对维护日期列表的查询。
SELECT `checkdates`.`checkdateplanneddate`, `checkdates`.`checkdatevehicle`, `checktypes`.`checktype`, `checktypes`.`emailto`, `checktypes`.`daysnotice`
FROM `checkdates`
, `checktypes`
WHERE `checktypes`.`checktype` = `checkdates`.`checkdatechecktype`;
这个想法是.. 每天,服务器都会根据为该类型支票设置的日期通知向客户发送电子邮件,让他们知道即将到来的支票日期。 (见图)
目前显示所有检查日期。
我需要做的就是过滤列表,使其仅显示日期 "今天的日期加上 checktypes.daysnotice"
我尝试了许多不同的查询,但似乎无法获得正确的组合。
提前谢谢你
我已附上一张图片以显示数据可用
【问题讨论】:
请用您正在运行的数据库标记您的问题。这是 mysql 吗? 这是我在 phpmyadmin 中运行的查询 【参考方案1】:如果我正确理解您的问题,并假设您正在运行 MySQL(如使用反引号进行引用和 phpmyadmin 屏幕副本所示),您可以使用如下日期算术:
SELECT cd.checkdateplanneddate, cd.checkdatevehicle, ct.checktype, ct.emailto, ct.daysnotice
FROM checkdates cd
INNER JOIN checktypes ct ON ct.checktype = cd.checkdatechecktype
WHERE cd.checkdateplanneddate = current_date + interval ct.daysnotice day
where
条件实现了所需的逻辑。
旁注:
使用标准的显式连接!隐式连接(from
子句中带有逗号)是一种非常古老的语法,不应在新代码中使用
表别名使查询更易于编写和阅读
【讨论】:
我已将您的选择添加到测试页面,但我没有得到任何结果(我需要确保确实有结果要显示)会检查并通知您,谢谢 我已经检查过,没有针对所选日期范围的检查,将 ct.daysnotice 更改为一个数字,它已经工作了。谢谢你的帮助:)以上是关于按日期过滤 SQL 结果的主要内容,如果未能解决你的问题,请参考以下文章