如何比较时间,在varchar字段中存储时间,如 09:00 AM 。有两次,开始时间和结束时间。我想显示来自用户输入的特定时间之间的所有记录。例如:
SELECT * FROM table WHERE `starttime` > '09:00 AM' AND `endtime` < '05:00 PM'
我已经尝试过:
SELECT * FROM table WHERE TIME_FORMAT( `starttime`, "%h:%i %p" ) > '09:00 AM'
AND
TIME_FORMAT( `endtime`, "%h:%i %p" ) < '02:30 PM'
基本数据库结构就像这样
CREATE TABLE table
(`id` int, `date` DATE, `location` varchar(55),`starttime` varchar(55),
`endtime` varchar(55));
INSERT INTO table
(`id`, `date`, `location`,`starttime`,`endtime`)
VALUES
(1, '2015-01-01', 'rnd','02:00 PM','04:00 PM'),
(2, '2015-01-10' ,'rnd','09:00 AM','02:00 PM'),
(3, '2015-01-03', 'rnd','03:00 PM','04:30 PM'),
(4, '2015-01-04', 'rnd','09:00 AM','05:30 PM'),
(5, '2015-01-05', 'rnd','11:00 AM','01:30 PM'),
(6, '2015-01-02', 'rnd','08:00 AM','01:30 PM'),
(7, '2015-01-03', 'rnd','10:00 AM','09:30 PM')
;
现在,当我使用starttime&gt;运行查询时'09:00''和结束时间&lt; '05:00'' 查询应该返回1,3,5行。