php - 如何找到存储在mysql数据库中的两个时间之间的时间交集

标签 php mysql datetime

我面临的问题不是很复杂,这里有几个答案,但我没有看到任何解决问题的答案。 所以我有一个表,其中包含两个 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/

相关文章:

c# - DateTime.Parse 关闭一小时。为什么?

php - 使用单个查询从 MYSQL 中的 2 个表中根据优先级获取记录

PHP-FPM (7.4.2) 没有正常停止?

php - Laravel Eloquent Not Created_At 今天

ruby-on-rails - 参数超出范围 Rails 4 和 bootstrap3-datetimepicker-rails

python - 带有偏移量索引的 Pandas 单个时间戳

php - Preg_split on quote,除非后面跟着另一个引号

java - 为什么 ProGuard 会中断 MySQL 连接,如何修复?

mysql - jpa自定义查询多参数

python - MySQL 和 Python 数据库不会自动更新