根据一个时间点,比如早上8:00:00,查询出某个时间字段到下一个8:00:00之前的数据。
首先分析一下,举个例子,
time=2019-09-02 10:02:50 这个字段,要查询到下一个8:00:00之前,就是到2019-09-03 8:00:00;
time=2019-09-02 07:50:50 这个字段,要查询到下一个8:00:00之前,就是到2019-09-02 8:00:00;
下面写一个sql语句:
SELECT
IF ( -- IF(expr1,expr2,expr3): 如果expr1为true,则expr2,否则expr3
DATE_FORMAT(time, '%H:%i:%s') < '08:30:00', -- DATE_FORMAT: 时间转换为字符串
str_to_date( -- str_to_date:字符串转换为时间
concat(
DATE_FORMAT(time, '%Y-%m-%d'),
'08:30:00'
),
'%Y-%m-%d %H:%i:%s'
),
str_to_date(
concat(
date_add( -- date_add(): 函数向日期添加指定的时间间隔。
DATE_FORMAT(time, '%Y-%m-%d'),
INTERVAL 1 DAY -- INTERVAL 1 DAY:下一天
),
'09:30:00'
),
'%Y-%m-%d %H:%i:%s'
)
)
FROM
table
如有不当之处,欢迎大佬指正,谢谢!