我有一个时间字符串为8:00 AM,9:00 AM等存储在MySQL表中。我想检查时间范围,如果时间早上11:00至下午6:00之间11:00 AM?如何在mysql中找到它。如何查找时间范围在MySQL给定一个表“墙壁时间”
时间存储如下
day depart_time return_time
Monday 9:00am 5:00pm
Wednesday 9:30am 4:30pm
Tuesday 9:00am 3:00pm
我有一个时间字符串为8:00 AM,9:00 AM等存储在MySQL表中。我想检查时间范围,如果时间早上11:00至下午6:00之间11:00 AM?如何在mysql中找到它。如何查找时间范围在MySQL给定一个表“墙壁时间”
时间存储如下
day depart_time return_time
Monday 9:00am 5:00pm
Wednesday 9:30am 4:30pm
Tuesday 9:00am 3:00pm
SELECT depart_time, return_time FROM SCHEDULE
WHERE CASE
WHEN STR_TO_DATE(depart_time, '%l:%i%p') < STR_TO_DATE(return_time, '%l:%i%p') THEN
STR_TO_DATE(depart_time, '%l:%i%p') <= @check_time AND @check_time < STR_TO_DATE(return_time, '%l:%i%p')
ELSE
NOT(STR_TO_DATE(return_time, '%l:%i%p') <= @check_time AND @check_time < STR_TO_DATE(depart_time, '%l:%i%p'))
END
用你想检查的时间替换@check_time
。这个查询将跨越两天的时间。
depart_time return_time
9:00am 5:00pm
11:00pm 1:00am
#SET @check_time = STR_TO_DATE('8:59am', '%l:%i%p');
(no result)
#SET @check_time = STR_TO_DATE('9:00am', '%l:%i%p');
9:00am 5:00pm
#SET @check_time = STR_TO_DATE('11:00am', '%l:%i%p');
9:00am 5:00pm
#SET @check_time = STR_TO_DATE('4:59pm', '%l:%i%p');
9:00am 5:00pm
#SET @check_time = STR_TO_DATE('5:00pm', '%l:%i%p');
(no result)
#SET @check_time = STR_TO_DATE('10:59pm', '%l:%i%p');
(no result)
#SET @check_time = STR_TO_DATE('11:00pm', '%l:%i%p');
11:00pm 1:00am
#SET @check_time = STR_TO_DATE('12:00am', '%l:%i%p');
11:00pm 1:00am
#SET @check_time = STR_TO_DATE('12:59am', '%l:%i%p');
11:00pm 1:00am
#SET @check_time = STR_TO_DATE('1:00am', '%l:%i%p');
(no result)
试试这个。
选择TIMEDIFF( '2006-10-31十一时50分31秒', '2006-10-31 11点50分01秒')
你需要给24小时格式,
SELECT SUBTIME('01:00:00.999999','02:00:00.999998');
感谢您的快速回复,但时间存储为字符串。请检查我更新的问题。 –
您可以使用STR_TO_DATE
将字符串数据类型转换为时间。在下面的示例中,返回“上午11:00”在出发时间和返回时间之间的所有行。
SELECT `depart_time`,
`return_time`
FROM `table`
WHERE STR_TO_DATE('11:00am', '%l:%i%p') BETWEEN STR_TO_DATE(`depart_time`, '%l:%i%p') AND STR_TO_DATE(`return_time`, '%l:%i%p')
STR_TO_DATE
函数根据指定的格式解析字符串。在这种情况下,它是:
你有情况下,当出发时间比返回时间更大?例如。出发时间是晚上11点,回程时间是凌晨1点(第二天)?这使它很有趣。 –
@Salman一个有趣的问题。我希望看到一个回复假设这是*不是*的情况下,因为它可以稍后扩大:) – 2011-06-25 06:45:38
@Chauhan我在模特哭:) – 2011-06-25 06:45:48