mysql - 如何使用 StartTime(varchar) 和 EndTime(varchar) 在 MySQL 中搜索记录?

标签 mysql phpmyadmin

这里我有一些记录,我想搜索从上午8:30到上午9:30的记录。

Screenshot of phpmyadmin

我尝试了这些查询但不起作用:

select * from table_name where '8:30 AM' BETWEEN start_time and end_time OR '9:30 AM' BETWEEN start_time and end_time

select *
from time_test
where STR_TO_DATE(start_time, '%h:%i %p') BETWEEN STR_TO_DATE('08:30 AM', '%h:%i %p') AND STR_TO_DATE('09:30 AM', '%h:%i %p')
    OR STR_TO_DATE(end_time, '%h:%i %p') BETWEEN STR_TO_DATE('08:30 AM', '%h:%i %p') AND STR_TO_DATE('09:30 AM', '%h:%i %p')

这是表sql:

DROP TABLE IF EXISTS `time_test`;
CREATE TABLE IF NOT EXISTS `time_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `start_time` varchar(20) NOT NULL,
  `end_time` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

INSERT INTO `time_test` (`id`, `name`, `start_time`, `end_time`) VALUES
(1, 'R1', '8:00 AM', '9:00 AM'),
(2, 'R2', '9:00 AM', '10:00 AM'),
(3, 'R1', '8:00', '9:00'),
(4, 'R2', '9:00', '10:00'),
(5, 'R2', '1:00 PM ', '2:00 PM'),
(6, 'R2', '13:00 ', '14:00'),
(7, 'R1', '8:00 PM', '9:00 PM'),
(8, 'R1', '8:30 AM', '9:30 AM');

最佳答案

您可以使用DATE()功能。在我的示例中使用DATETIME。可以尝试使用您的数据库记录。

SELECT `yourdatabase`
  FROM `yourtable`
 WHERE DATETIME(`yourcolumn`) = '2019-06-17 08:30'

但是,为了获得更好的性能,您可以使用..

  WHERE `yourcolumn` 
BETWEEN '2019-06-17 08:30:00'
    AND '2019-06-17 09:30:00'

您可以查看HERE了解详情或阅读 THIS .

关于mysql - 如何使用 StartTime(varchar) 和 EndTime(varchar) 在 MySQL 中搜索记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58020773/

相关文章:

PHP MYSQL 插入命令不起作用

php - 在没有预先准备好的语句的情况下清理 MySQL 查询(PHP + 旧的 mysql 模块)

php - MYSQL:导出/导入数据以防止表一致性的最佳方式

C# Asp.net无法连接到phpmyadmin

php - MySQL:将选定的表复制到新数据库

MySQL - 连接 View 和表

mysql - 从按分钟计算的原始数据中按小时聚合 MySQL 数据

mysql - 一个查询从其他表值删除表行

mysql - phpMyAdmin #1062 - key '' 的重复条目 'PRIMARY'

mysql - 数据库规范化一对一关系