按日期过滤 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 结果的主要内容,如果未能解决你的问题,请参考以下文章

带有WHERE子句逻辑的SQL Server存储过程

Spring JDBC Template SQL-Query 按日期过滤

r - 按日期过滤,按条件分组

分页尝试转到第 2 页时不显示结果(按名称和日期过滤结果)

SQL 日期过滤器:当开始日期 = 结束日期时返回结果

从 SQL 数据库导入表并按日期过滤行时,将 Pandas 列解析为 Datetime