[英]SQL - get records within date range, incl. same day records
我在这里(希望)做些简单的事情。 我有一本每天都会查看的在线日志。 每天都有许多我必须检查的日志案例,因此我构建了一个简单的日期过滤器,以在主页上筛选每天的日志案例。
现在,当第一次加载主页时(意味着,使用默认的过滤条件),我希望该页面显示文件中最近DAY的所有日志案例。 因此,例如,如果今天是每月的10号,而最近的案件是在8号提交的,那么我想查询8号以后的所有案件。
另一方面,如果有人已经提交了10号的日志文件,那么我想显示10号的所有记录。
现在的问题是,查询是否可以准确地识别出最后一条记录的日期,但截止时间似乎是午夜或00:01,这意味着它不会显示午夜过后一分钟提交的当天的任何日志文件! 因此,如果我想看看今天的案件,我只会看到那些在00:00到00:01之间提交的案件,从而使整个过滤器毫无用处。
询问
$sql = "SELECT *
FROM qci_dmlog_data
WHERE Incident_Date IN (
SELECT MAX( Incident_Date )
FROM qci_dmlog_data
WHERE Holidex = '".$_SESSION['Holidex']."'
)
GROUP BY LogID ORDER BY Date DESC";
总结起来,我该如何过滤最近的DAY记录而不关心提交的时间?
谢谢!
您应该查找事件日期的日期部分,以获取最近日期的所有记录。
SELECT *
FROM qci_dmlog_data
WHERE DATE(Incident_Date) IN (
SELECT MAX(DATE(Incident_Date))
FROM qci_dmlog_data
WHERE Holidex = '".$_SESSION['Holidex']."'
)
我相信除了只使用“日期”的date
部分之外,您还需要关联Holidex
上的子查询:
SELECT d.*
FROM qci_dmlog_data d
WHERE d.Holidex = '".$_SESSION['Holidex']."' AND
DATE(d.Incident_Date) = (SELECT MAX(DATE(d2.Incident_Date))
FROM qci_dmlog_data d2
WHERE d2.Holidex = d.Holidex
);
假设“最新日期”是Holidex
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.