请教各位大牛一下,数据库里怎样查询时间段范围内的数据(mysql)

怎样根据 创建时间查询:

1、上一天17点之后至当日9时之前的数据

2、当日9时之后至当日12时之前的数据;

3、当日12时之后至 17时之前的数据

求各位大神帮帮忙~

SELECT create_time FROM table WHERE create_time BETWEEN DATE_SUB(CURDATE(),INTERVAL 7 HOUR) AND DATE_SUB(CURDATE(),INTERVAL -9 HOUR);

SELECT create_time FROM table WHERE create_time BETWEEN DATE_SUB(CURDATE(),INTERVAL -9 HOUR) AND DATE_SUB(CURDATE(),INTERVAL -12 HOUR);

SELECT create_time FROM table WHERE create_time BETWEEN DATE_SUB(CURDATE(),INTERVAL -12 HOUR) AND DATE_SUB(CURDATE(),INTERVAL -17 HOUR);

只能用sql吗,如果是javaweb应用的话可以使用java8的localdatetime

第一个问题

针对第二个问题,可以先使用DATE_FORMAT 把当前时间转成年月日(时分秒默认为00:00:00),再使用date_add 函数,加上时间,如下:

date_add(DATE_FORMAT(NOW(),'%Y-%m-%d') ,interval -8 hour) < create_time <date_add(DATE_FORMAT(NOW(),'%Y-%m-%d') ,interval 9 hour)

针对第二个问题,可以先使用DATE_FORMAT 把当前时间转成年月日(时分秒默认为00:00:00),再使用date_add 函数,加上时间,如下

date_add(DATE_FORMAT(NOW(),'%Y-%m-%d') ,interval 9 hour) < create_time <date_add(DATE_FORMAT(NOW(),'%Y-%m-%d') ,interval 12 hour)

第三个问题同理