我面临的问题不是很复杂,这里有几个答案,但是我没有看到任何能解决我需要的问题。因此,我有一个表,其中包含两个类型为VARCHAR的字段,分别名为timefrom和timeto。这些字段以以下格式存储时间:12:00,05:18,00:05 ....我没有日期也没有秒,只有24小时制的小时和分钟。我有一个包含两个字段的表单,开始时间和结束时间。现在,我想从数据库中选择所有行,其中用户的开始时间和结束时间与DB中的timefrom和timeto字段相交。我有以下查询:
"SELECT * FROM reservation WHERE ((timeto>='$timefrom' AND timeto<='$timeto') OR (timefrom>='$timefrom' AND timefrom <='$timeto'))"
该查询适用于所有类型的交叉路口,但如果用户给定的时间适合存储在DB中的时间,则该查询无效。例如,如果DB timefrom = 20:00和timeto = 23:00,并且用户输入starttime = 21:00和endtime = 22:00,则查询不返回任何交集,而是应该返回。如果有人可以向我展示可靠的解决方案,那将是一个很大的帮助。谢谢
将任何类型的日期/时间保存为简单字符串不是一个好主意,因为您失去了使用MySQL本身提供的日期和时间的即用型功能。
尝试这样的事情:
SELECT * FROM reservations
WHERE
TIME_FORMAT(timefrom, '%H:%i') >= '21:00' AND TIME_FORMAT(timeto, '%H:%i') <= '23:00'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句