我正在尝试检查两个时间间隔,第一个在代码中知道两个DATETIME实例 Start_Time 和 End_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和&gt; =&lt; =这样的日期时间,但它一直让我错误并要求检查sql版本!
这可以在几个小时内正常工作,任何人都知道如何包含IF语句或其他东西以使其在几分钟内正常工作!?
答案 0 :(得分:1)
如果您有实际的约会时间,我认为您通过尝试隔离小时,分钟,秒等来使这太复杂。
尝试这种性质:
select *
from MY_TABLE
where @Start_Time < DB_End_Time
and @End_Time > DB_Start_Time
这将检查任何重叠,但不会检查连续的间隔。如我所知,我不认为10-11和11-12重叠,但如果您愿意,可以将< ... >
更改为<= ... >=
以解释该问题。
另外,如前所述,请使用您应用中的参数化查询,而不是易受sql注入攻击的串联字符串。