MySQL上一小时数据

时间:2018-06-29 02:08:07

标签: mysql time

我尝试了几种在这里找到的方法,但是比最后一个小时吐出的更多。

该表的字段t_timestamp中包含如下数据:

2018-06-29 00:00:02
2018-06-29 00:10:01
2018-06-29 00:20:02
2018-06-29 00:30:01
2018-06-29 00:40:02
2018-06-29 00:50:01
2018-06-29 01:00:02
2018-06-29 01:10:01
2018-06-29 01:20:02
2018-06-29 01:30:01
2018-06-29 01:40:02
2018-06-29 01:50:01

现在是2018-06-29 01:55:04

虽然我使用过类似的方法,但上面创建的方法是

WHERE t_timestamp >= DATE_SUB(NOW(), INTERVAL 1 HOUR)
WHERE (now() - t_timestamp)<360000
....

我的思维错误在哪里?

------已编辑------ 我认为问题出在t_timestamp的领域。一天的时间越长,从那天那一天开始我获得的数据越多,实际上是从今天开始。

我得到的时间字段为($ tickers [$ symbol1] ['datetime']): “ 2018-06-29T00:00:02.732”

我曾经格式化过它:

    $a = explode('T',$tickers[$symbol1]['datetime']);
    $b = explode(".",$a[1]);
    $t_timestamp = $a[0] . " " . $b[0];

是不是造成了麻烦?

1 个答案:

答案 0 :(得分:1)

演示:http://sqlfiddle.com/#!9/f5e2c3/8/0

解决方案:

create table mytime(times timestamp);

insert into mytime values('2018-06-29 00:00:02');
insert into mytime values('2018-06-29 00:10:01');
insert into mytime values('2018-06-29 00:20:02');
insert into mytime values('2018-06-29 00:30:01');
insert into mytime values('2018-06-29 00:40:02');
insert into mytime values('2018-06-29 00:50:01');

insert into mytime values('2018-06-29 01:00:02');
insert into mytime values('2018-06-29 01:10:01');
insert into mytime values('2018-06-29 01:20:02');
insert into mytime values('2018-06-29 01:30:01');
insert into mytime values('2018-06-29 01:40:02');
insert into mytime values('2018-06-29 01:50:01');


-- time from given time
select *
from  mytime
where times >= DATE_SUB('2018-06-29 01:50:10',INTERVAL 1 HOUR); 

-- time from now time
select *
from  mytime
where times >= DATE_SUB(now(),INTERVAL 1 HOUR);