2017-02-24 86 views

回答

1

使用这样的事情:

SELECT a.mydate, b.`close` 
FROM (
    SELECT max(t.`date`) AS mydate 
    FROM yourTable t 
    GROUP BY DATE_FORMAT(t.`date`,"%Y%m%d%H") 
) a 
LEFT JOIN yourTable b ON a.mydate = b.`date` 
ORDER BY a.`date`; 
+0

感谢您的快速回复!这适用于选择每个小时的最后时间戳,但由于某些原因,关闭值是错误的。 该查询返回: 2009-05-08 11:59:00 - 1.504595 真正的数据是: 2009-05-08 11:59:00 - 1.50721 –

+0

它返回正确的,如果我拿走MAX()但我明显需要获得最后时间戳 –

+0

@Jay P - 我已经改变了我的答案 - 请再次测试 –

0

我适应贝恩德Buffen的答案。他的查询正确选择了每个小时的最后一个时间戳,但是关闭的值错误。我的查询下面选择正确的关闭值。

SELECT table1.close 
FROM `GBPUSD_minutes` table1 
INNER JOIN(
    SELECT max(`date`) as last FROM `GBPUSD_minutes` GROUP BY DATE_FORMAT(`date`,"%Y%m%d%H") 
) table2 
    on table1.date = table2.last 
WHERE `date` > '2010-01-01 00:00:00' AND `date` < '2010-01-30 00:00:00' 

由于贝恩德Buffen给我

DATE_FORMAT(`date`,"%Y%m%d%H") 
0

试试这个。

SELECT t1.* FROM mytable t1 
WHERE t1.`date` = (SELECT MAX(`date`) FROM mytable t2 
    WHERE DATE(t1.`date`) = DATE(t2.`date`) AND HOUR(t1.`date`) = HOUR(t2.`date`) 
);