php - 如何在给定 "wall time"表的 mysql 中查找时间范围

标签 php mysql

我在 mysql 表中存储了一个时间字符串,如 8:00AM、9:00AM 等。我想检查时间范围,如果上午 11:00 出现在上午 9:00 到下午 6:00 之间?如何在mysql中找到它。

时间存储如下

day         depart_time     return_time
Monday      9:00am          5:00pm
Wednesday   9:30am          4:30pm
Tuesday     9:00am          3:00pm

最佳答案

你可以使用 STR_TO_DATE将字符串数据类型转换为时间。在下面的示例中,将返回出发时间和返回时间之间“11:00am”的所有行。

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 函数根据指定的格式解析字符串。在这种情况下,它是:

  • %l: 小时 (1-12)
  • %i: 分钟 (00-59)
  • %p:上午/下午

关于php - 如何在给定 "wall time"表的 mysql 中查找时间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6476262/

相关文章:

php - 显示特定的登录用户名

php - 数据库中空对象值的自动 DATETIME 值

PHP 从 MySQL 回显 HTML 作为同级而不是子级插入

php - Mysql查询匹配多个可能的字符

mysql - 如何向 codeigniter 中的所有订阅者发送时事通讯图像

php - 相同函数名不同参数类型

php - 具有多个命名参数的 PDO bindParam()

java - 限制 Mysql 用户从工作台登录,只能从应用程序连接到 MYSQL

php - SQLSTATE[HY000] [2002] 没有这样的文件或目录 - PHP 守护进程

sql - 这个 MySQL 查询有什么问题? SELECT * AS `x` ,以后怎么再用x?