我的数据库表中有教授的schedule_tbl,并且有starting_time、ending_time 和day 列。我想做的是,如果我插入从 7:00:00 到 10:00:00 的开始,那么所有计数器 7:00:00-10:00:00 都是无效的。
我的记录示例
starting_time ending_time day
7:00:00 10:00:00 Monday
插入
6:00:00 8:00:00 Monday
那么它一定是无效的。到目前为止,这是我的代码。
("SELECT * FROM schedule_tbl WHERE "' and starting_time >= '" & _
Me.dtpStart.Value.ToString("HH:mm:ss") & "' and ending_time <= '" & _
Me.dtpEnd.Value.ToString("HH:mm:ss") & "' and day = '" & ComboBox4.Text & "'", conn3)
它可以工作,但仅限于starting_time和ending_time之间的范围。如果我输入6:00:00作为starting_time,9:00:00作为ending_time,它添加到数据库中应该是无效 .
最佳答案
确定两个周期是否重叠的正确逻辑是,第一个周期在第二个周期结束之前开始,第一个周期在第二个周期开始之后结束。获得重叠的逻辑如下所示:
SELECT s.*
FROM schedule_tbl s
WHERE s.starting_time < $EndTime and
s.ending_time > $StartTime;
注意:您可能需要 >=
和<=
解决你的问题而不是严格的不平等。
关于mysql - MySQL VB.Net 中的时间范围验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35537273/