gpt4 book ai didi

mysql检查其他时间之间的时间

转载 作者:行者123 更新时间:2023-11-30 23:27:25 26 4
gpt4 key购买 nike

我正在做一些关于调度程序的工作。其中一项功能是将电视节目插入调度程序。在服务器端,这是通过发送一个带有请求开始时间的程序 ID 来实现的,即“在 17-09-2012 的 10:49 将程序 ID 123 插入到计划中”。但是这些节目必须插入到 block 中,即从晚上 10 点到 12 点的文化节目。所以在插入之前我们需要用这段sql检查一个 block 是否存在

SELECT t1.schedblockid, t1.blockname,
t1.blockstart, t1.blockend, t2.scheduledate
FROM scheduleblocks t1, schedule t2
WHERE t1.schedblockid = t2.scheduleblock
AND t2.scheduledate = '$_GET[scheddate]'
AND '$_GET[schedtime]' >= blockstart
AND '$_GET[schedtime]' <= blockend

它简单有效,在上面的示例中,它检查 17-09-2012 的时间表中是否存在适合 10.49 的 block 。我们现在遇到的问题是我们正在尝试引入跨日区 block ,例如从晚上 11 点到凌晨 2 点一个街区。但是使用上面的 sql 代码,例如在搜索时间 23:51 时,它不会找到 23:00-02:00 的时间段。

这里是表格定义。

CREATE TABLE IF NOT EXISTS `schedule` (
`scheduleid` int(11) NOT NULL AUTO_INCREMENT,
`scheduledate` varchar(20) NOT NULL,
`scheduleblock` int(11) NOT NULL,
PRIMARY KEY (`scheduleid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=43 ;


CREATE TABLE IF NOT EXISTS `scheduleblocks` (
`schedblockid` int(11) NOT NULL AUTO_INCREMENT,
`blockname` varchar(100) NOT NULL,
`blockstart` varchar(10) NOT NULL,
`blockend` varchar(10) NOT NULL,
`linked` int(11) NOT NULL,
PRIMARY KEY (`schedblockid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=44 ;

这些表只使用 varchars 而不是内置的日期时间类型,我想这就是我们需要更改的内容,但不确定如何/在哪里更改?非常感谢任何帮助。

最佳答案

将表结构更改为:

CREATE TABLE IF NOT EXISTS `schedule` (
`scheduleid` int(11) NOT NULL AUTO_INCREMENT,
`scheduledate` DATE NOT NULL,
`scheduleblock` TIME NOT NULL,
PRIMARY KEY (`scheduleid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=43 ;


CREATE TABLE IF NOT EXISTS `scheduleblocks` (
`schedblockid` int(11) NOT NULL AUTO_INCREMENT,
`blockname` varchar(100) NOT NULL,
`blockstart` TIME NOT NULL,
`blockend` TIME NOT NULL,
`linked` int(11) NOT NULL,
PRIMARY KEY (`schedblockid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=44 ;

如果您不是从头开始,则需要ALTER您的表:

ALTER TABLE schedule CHANGE COLUMN `scheduledate` `scheduledate` DATE NOT NULL;
ALTER TABLE schedule CHANGE COLUMN `scheduleblock` `scheduleblock` TIME NOT NULL;
ALTER TABLE scheduleblocks CHANGE COLUMN `blockstart` `blockstart` TIME NOT NULL;
ALTER TABLE scheduleblocks CHANGE COLUMN `blockend` `blockend` TIME NOT NULL;

关于mysql检查其他时间之间的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12551950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com