我在比较MySQL时间字段时遇到麻烦,我有一个从NO开始的NOEVENTS行09:00
,10:00
并且我试图在另一张表中插入一行,但是我需要将NOEVENTS时间与传入的Time字段进行比较。例:
我想从插入一个事件09:15
来09:30
,另一个是10:00
到11:00
,所以我怎么能比较呢?我正在尝试这个:
select count(idNOEVENTS) into existNOEVENT from NOEVENTS b where eventInitialTime && eventFinalTime between b.initialTime and b.finalTime;
if existNOEVENT>0
SET MESSAGE_TEXT = 'Error! no events allowed at this time';
问题是当我尝试将to插入09:15
时09:30
,它会抛出上面显示的错误消息。没关系,它可以工作,但是当我尝试插入10:00
to11:00
事件时,它会抛出味精,但它不应该,该如何解决呢?还是比较好?
谢谢,对不起,我英语不好。
你可以这样
SELECT *
FROM noevents
WHERE (? > initialTime AND ? < finalTime)
OR (? > initialTime AND ? < finalTime)
现在不用COUNT(*)
检查行是否存在。使用EXIST()
代替。
话虽这么说,但您的程序代码可能看起来像这样
DELIMITER $$
CREATE PROCEDURE add_event(IN _start TIME, IN _end TIME)
BEGIN
IF EXISTS(SELECT *
FROM noevents
WHERE (_start > initialTime AND _start < finalTime)
OR (_end > initialTime AND _end < finalTime)) THEN
SIGNAL sqlstate '45000'
SET message_text = 'Error! no events allowed at this time';
ELSE
-- Do whatever you have to do to insert an event
SELECT 'Success: event added';
END IF;
END$$
DELIMITER ;
这是SQLFiddle演示
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句