我正在努力解决这个问题(希望如此)。我有一个在线日志,我每天都会查看。每天都有一些我必须检查的日志,因此我构建了一个简单的日期过滤器来筛选主页上每天的日志。
现在,当第一次加载主页面时(意味着,使用默认的过滤条件),我希望页面显示最近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";
总结一下,如何在不关心提交时间的情况下过滤最近一天的记录?
谢谢!
答案 0 :(得分:2)
您应该查看事件日期的日期部分,以获取最近日期的所有记录。
SELECT *
FROM qci_dmlog_data
WHERE DATE(Incident_Date) IN (
SELECT MAX(DATE(Incident_Date))
FROM qci_dmlog_data
WHERE Holidex = '".$_SESSION['Holidex']."'
)
答案 1 :(得分:0)
我认为除了仅使用“日期”的Holidex
部分之外,您还需要将date
上的子查询关联起来:
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
。