我面临的问题不是很复杂,这里有几个答案,但我没有看到任何解决问题的答案。 所以我有一个表,其中包含两个 VARCHAR 类型的字段,名为 timefrom 和 timeto。 这些字段以这种格式存储时间:12:00、05:18、00:05 ....我没有日期,也没有秒,只有 24/h 时间格式的小时和分钟。 我有一个包含两个字段的表单,开始时间和结束时间。现在我想从数据库中选择用户开始时间和结束时间与数据库中的 timefrom 和 timeto 字段相交的所有行。 我有以下查询:
"SELECT * FROM reservation WHERE ((timeto>='$timefrom' AND timeto<='$timeto') OR (timefrom>='$timefrom' AND timefrom <='$timeto'))"
此查询适用于所有类型的交叉路口,但如果用户给出的时间与存储在数据库中的时间相符则无效。 例如,如果 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'
关于php - 如何找到存储在mysql数据库中的两个时间之间的时间交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37478529/