我有一张这样的桌子

UserID INT TimeToReset VARCHAR
2 20:00
3 21:00
4 22:00
5 23:30
6 23:50
7 0:00
8 0:10
9 5:00

我想 Select "time To Reset"介于23:50和0:10之间的所有用户ID.

这里的例子:http://sqlfiddle.com/#!9/174565/1

推荐答案

我建议适当地输入您的专栏.MySQL中有一个TIME数据类型.

ALTER TABLE test MODIFY resetTime TIME;

然后您可以像这样查询:

SELECT * from test 
WHERE 
  resetTime >= "23:50"
  OR resetTime <= "0:10" 

或者:

SELECT * from test 
WHERE 
  resetTime >= "05:00"
  AND resetTime <= "05:30" 

注意不同的AND/OR逻辑,这取决于您的时间框架是否在午夜之后结束.

See updated SQL fiddle

或者,您也可以 for each 查询动态转换字符串,但这不一定会降低性能.如果可以,请修改列定义.使用显式类型转换时,查询将如下所示:

SELECT * from test 
WHERE 
  TIME(resetTime) >= TIME("23:50")
  OR TIME(resetTime) <= TIME("00:10")

See this working in in SQL fiddle too

Mysql相关问答推荐

无条件理解MySQL中内连接和交叉连接的相似性

无法删除或更新父行:外键约束无法删除表

用于将具有多个状态更改日期列的单行转换为具有状态和时间戳的多行的SQL查询

Python MySQL-无法从数据库中删除行

可以优化这个带有重复WHERE子句的查询吗?

带有值分隔的MySQL分组不起作用

使用 autocommit = 0 和 InnoDB 表的 LOCK TABLES 检测死锁

java.lang.NullPointerException:无法调用com.proj.my.repository.OrderRepository.save(Object),因为this.orderRepository为空

根据单个日期字段获取范围/天数

在分组结果 MySQL 5.7 版中获取最多的重复值

包含 group_contact 的视图的问题

mySQL 中的主数据库和 IF 错误?

将 wordpress 自定义字段转换为单个数组

使用带有 ELSEIF 和 ELSE 的 3 列更新问题

MySQL:使用来自查询的信息创建一个新表

MySQL PHP - Select WHERE id = array()?

安装 mysql-python (Windows)

在 MYSQL 中按枚举字段排序

MySQL DAYOFWEEK() - 我的一周从星期一开始

来自 MySQL 中多个表的 COUNT(*)