MYSQL根据当前时间查询结果

标签 mysql sql mysql-error-1064

查询获取开始时间和结束时间之间的记录列表

例如:

Start_time    End_time 
----------------------

22:00         05:00

20:00         02:00

如果我在这段时间内查询必须得到那些结果,我不使用任何特定日期。我用了 Now() Between 不值得任何人有好主意

最佳答案

尝试使用DATE_FORMAT(dt,'%H:%i')从日期获取 HH:MI 字符串,然后将其与 start_timeend_time 进行比较,具体取决于 start_time>end_time 或不是。

SET @start_time = '22:00';

SET @end_time = '05:00';

select *
  from T 
  where (
            (@start_time<=@end_time) 
            AND (DATE_FORMAT(dt,'%H:%i') >= @start_time)
            AND (DATE_FORMAT(dt,'%H:%i') <= @end_time)
         )
         OR
         (  (@start_time>@end_time) 
            AND 
            (
              (DATE_FORMAT(dt,'%H:%i') >= @start_time)
              OR
              (DATE_FORMAT(dt,'%H:%i') <= @end_time)
            )  
          ); 

SQLFiddle demo

关于MYSQL根据当前时间查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32747643/

相关文章:

SQL 内连接。 ON 条件与 WHERE 子句

php - 将日期结构从 datetime 更改为 VARCHAR 时出现 mysql 错误 1064

MYSQL PHP错误1064

MySQL 排序分组依据结果

php - Mysql多连接查询问题

php - 由元查询引起的 WordPress 查询速度非常慢

php - 警告 : mysqli_query() expects parameter 1 to be mysqli error

sql - Presto DB 支持多少用户?

mysql - 检查重复记录的最佳方法

mysql - 没有控制台执行MySQL查询失败