您好我有一个表名tbl_Clock它有一个字段名称Clock。这是我的表的一些例子:
| 08.00-09.40 |
| 09.40-10.00 |
| 10.00-11.40 |
这是我的问题。
如果我想检查是否已有时钟,那么我只需执行以下代码:
select * from tbl_Clock where substring(Clock,1,5) >= '08.00' AND substring(Clock,7,5) <= '09.40'
如果我执行上面的代码已经完全相同的时间,它的工作就可以了,我可以阻止保存数据。
但如果我输入09.40-10.50或08.00-10.00这样的时间,即使他们之间已经存在时间,它仍然可以保存。任何人都知道验证这个的最佳方法是什么?
答案 0 :(得分:0)
我想您要检查您的时段与任何新输入的时段之间是否有任何交集。
首先,请将开始和结束时间作为TIME存储在数据库中,而不是字符串。我会因为很多原因而变得更好。开始时间将是名为START
的列,结束时间列将为END
。
其次,已经有关于检查任何交叉点的答案,我会在找到它后分享链接。一般检查将是
WHERE START <= :end AND END >= :start
因此,如果您想检查09:40
到10:00
是否与现有记录有任何交集,那么查询将是:
SELECT * FROM MY_TABLE WHERE START <= '10:00:00' AND END >= '09:40:00'
这应该返回你问题中的前三个记录,表明时间段已经与现有时间段相交。