繁体   English   中英

SQL-获取日期范围内的记录,包括 当天记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM