mySQL - 在单个表中选择日期范围重叠

标签 mysql

很抱歉之前可能把这个问题搞砸了……我还是想不起来。

基本上,我有一个表来跟踪一组报告的“批准者”。还跟踪报告何时“创建”和何时“提交”。

我希望在任何报告的日期/时间重叠时进行标记。

示例(一张表,“报告”):

"Created"                 "Submitted"                "ApproverID"
4/20/2012 5:01:32 AM          4/20/2012 5:30:32 AM          10
4/20/2012 5:08:32 AM          4/20/2012 5:45:32 AM          10
4/20/2012 5:01:32 AM          4/19/2012 5:38:16 PM          15 

...我需要返回以下内容(同一批准人与日期/时间重叠的地方)

 "Created"                 "Submitted"                "ApproverID"    
4/20/2012 5:01:32 AM          4/20/2012 5:30:32 AM          10            
4/20/2012 5:08:32 AM          4/20/2012 5:45:32 AM          10 

所以审批人(本例中为 10 人)有一个窗口与这些报告重叠。看起来像是带有 BETWEEN 子句的 SELECT...但我有点难过。

我有如下简单的东西:

SELECT Created, LastModified, ApprovalGroupID, count(*) 
FROM   shifthandover.uniquereports
WHERE ApprovalGroupID between Created and LastModified

感谢帮助!

最佳答案

根据您的问题,我了解到在创建第一个(或更早的)报告之后创建第二个(或后续)报告时会发生“重叠”,但在提交之前的报告之前 - 即批准人正在处理多个报告一次。对吗?

您可以尝试将报告表连接到自身 - 例如:

SELECT * FROM reports r1 
JOIN reports r2 
ON r1.approvalId=r2.approvalId 
AND r2.created>r1.created 
AND r2.created<r1.submitted

关于mySQL - 在单个表中选择日期范围重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10609491/

相关文章:

php - 防止在没有事件数据库连接的情况下使用 mysql_real_escape_string 时出现错误

mysql - Where 子句中的 SQL 更改条件

mysql - 使用 JMeter 测试 Web 应用程序中的并发性和/或事务完整性

java - 无法通过java启动mysql

php - 传递参数给php获取具体信息

MySQL 嵌套 block 错误 1064

php - 如何在CodeIgniter Datamapper中使用cascade_delete配置选项

c# - 使用 Linq C# 的联接中的正则表达式?

mysql - 快速学习关系数据库设计有哪些好的引用资料?

php - 如何在laravel中仅显示日期时间中的日期