如何在一小时内在mysql中选择24小时记录?

时间:2016-09-16 09:30:40

标签: mysql sql datetime

查询的输入是日期和开始时间 结束时间与开始时间相同 所以我希望在给定时间内记录24小时

例如 日期= 2016年8月11日 开始时间= 06:30:00 AM

所以结束时间也是06:30:00 AM 但是日期应该改为2016-08-12 动态和结束时间应该是06:30:00 AM 间隔应为1小时

预期结果

 Date          Starttime     Endtime
 2016-08-11    00:00:07      00:21:55
 2016-08-11    01:00:27      01:59:10
 2016-08-11    02:00:09      02:59:33
表结构如下

 Date_         Starttime     Endtime
'2016-08-11'   00:00:07      00:21:55
'2016-08-11'   01:00:27      01:29:32
'2016-08-11'   01:30:32      01:59:10
'2016-08-11'   02:00:09      02:29:49
'2016-08-11'   02:30:48      02:59:33
'2016-08-11'   03:30:31      03:59:13
'2016-08-11'   04:00:12      04:29:47
'2016-08-11'   04:30:46      04:59:40
'2016-08-11'   05:00:39      05:29:42
'2016-08-11'   05:30:41      05:59:24
'2016-08-11'   06:00:23      06:29:01
'2016-08-11'   06:30:00      06:59:33
'2016-08-11'   07:00:31      07:29:25
'2016-08-11'   07:30:24      07:59:57
'2016-08-11'   08:00:57      08:29:39
'2016-08-11'   08:30:38      08:59:58
'2016-08-11'   09:00:50      09:29:22
'2016-08-11'   09:30:14      09:59:17
'2016-08-11'   10:00:08      10:29:58
'2016-08-11'   10:30:48      10:59:57
'2016-08-11'   11:00:48      11:29:31
'2016-08-11'   11:30:26      11:59:32
'2016-08-11'   12:00:24      12:29:35

任何解释请发表评论

2 个答案:

答案 0 :(得分:2)

这可能对您有所帮助

SELECT date,MIN(Starttime),MAX(Endtime) FROM your_table 
  WHERE CONCAT(date,' ',Starttime) >= CONCAT(?,' ',?) 
   AND CONCAT(date,' ',Starttime) < CONCAT(DATE_ADD(?,INTERVAL 1 DAY),' ',?) 
  GROUP BY date,HOUR(Starttime)

输入'?'如下。

SELECT date,MIN(Starttime),MAX(Endtime) FROM your_table 
  WHERE CONCAT(date,' ',Starttime) >= CONCAT('2016-08-11',' ','06:30:00') 
   AND CONCAT(date,' ',Starttime) < CONCAT(DATE_ADD('2016-08-11',INTERVAL 1 DAY),' 06:30:00') 
  GROUP BY date,HOUR(Starttime)

答案 1 :(得分:0)

只需转换为时间戳并添加86400,相当于1天

  select * from table where  UNIX_TIMESTAMP(`Starttime`) >= UNIX_TIMESTAMP('datetimeStart') and UNIX_TIMESTAMP(`Endtime`) <= UNIX_TIMESTAMP('datetimeStart')+86400