检查SQL中的时间重叠

本文关键字:时间重叠 SQL 检查 | 更新日期: 2023-09-27 18:12:04

我试图检查两个时间间隔,第一个是在代码中知道作为两个DATETIME实例Start_TimeEnd_Time,第二个间隔我从数据库检索,我如何检查分钟在情况下小时是相等的,这是我想写的

   Select * FROM MY_TABLE 
   WHERE " ( "+ Start_Time + "<= IF(HOUR(DB_End_Time)=0, 24, HOUR(DB_End_Time) ) AND" +
         " IF(HOUR(DB_Start_Time)=0, 24, HOUR(DB_Start_Time) ) <= " + End_Time + " ) "+
         " OR "+
         " ( "+ Start_Time +"<= IF(HOUR(DB_Start_Time)=0, 24, HOUR(DB_Start_Time))AND " +
         " IF(HOUR(DB_End_Time)=0, 24, HOUR(DB_End_Time) ) <= " + End_Time+" ) ;"+

我尝试了像Between和>= <=为日期时间它自己,但它一直让我一个错误,并要求检查sql版本!

这对小时工作很好,有人知道如何包括IF语句或其他东西,以使它对分钟工作很好!?

检查SQL中的时间重叠

如果您要使用实际的日期时间,我认为您试图将小时,分钟,秒等隔离开来会使其变得过于复杂。

试试这个性质:

select *
from MY_TABLE
where @Start_Time < DB_End_Time
    and @End_Time > DB_Start_Time

这将检查任何重叠,但不检查连续间隔。例如,我不认为10-11和11-12重叠,但如果你愿意,你可以将< ... >改为<= ... >=来解释这一点。

此外,正如已经提到的,请使用一个参数化的查询从你的应用程序,而不是你的连接字符串容易受到sql注入攻击。