在时间之间获得一排

时间:2015-03-08 16:14:31

标签: mysql sql

我每隔3小时就有一行,比如:

796 4   0.9852  2015-04-12 13:00:00
797 4   0.1139  2015-04-12 16:00:00
798 4   0.5736  2015-04-12 19:00:00
799 4   0.0486  2015-04-12 22:00:00
800 4   0.3138  2015-04-13 01:00:00
801 4   0.9298  2015-04-13 04:00:00
802 4   0.9713  2015-04-13 07:00:00

...

1100    5   0.5677  2015-04-12 13:00:00
1101    5   0.8268  2015-04-12 16:00:00
1102    5   0.5761  2015-04-12 19:00:00
1103    5   0.2263  2015-04-12 22:00:00
1104    5   0.8859  2015-04-12 01:00:00

如果当前时间介于16:00:00和19:00:00之间,如何获得。

2 个答案:

答案 0 :(得分:1)

select *
  from time_table x
  join (select user_id, min(time_column) as time_column
          from time_table
         where time_column >= current_timestamp
         group by user_id) y
    on x.user_id = y.user_id
   and x.time_column = y.time_column
union all
select *
  from time_table x
  join (select user_id, max(time_column) as time_column
          from time_table
         where time_column < current_timestamp
         group by user_id) y
    on x.user_id = y.user_id
   and x.time_column = y.time_column

答案 1 :(得分:0)

假设在当前时间之后总是排在第一行并且排a,你可以这样做:

 (
   SELECT *
     FROM mytable
    WHERE `date` <= NOW()
      AND user_id = 4
 ORDER BY `date` DESC 
    LIMIT 1   
 )
UNION
 (
   SELECT *
     FROM mytable
    WHERE `date` > NOW()
      AND user_id = 4
 ORDER BY `date` ASC 
    LIMIT 1   
 )