2017-02-24 9 views

Antwort

1

Verwendung so etwas wie dieses:

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

Danke für die schnelle Antwort! Dies funktioniert für die Auswahl des letzten Zeitstempels für jede Stunde, jedoch ist der Schlusswert aus irgendeinem Grund falsch. Diese Abfrage liefert: 2009-05-08 11.59.00 - 1,504595 Die realen Daten ist: 2009-05-08 11.59.00 - 1,50721 –

+0

Es gibt richtig, wenn ich max wegzunehmen() aber ich brauche das natürlich, um den letzten Zeitstempel der Stunde zu bekommen –

+0

@Jay P - ich habe meine Antwort geändert - bitte noch einmal testen –

0

I angepasst Bernd Buffen Antwort. Seine Abfrage hat den letzten Zeitstempel für jede Stunde korrekt ausgewählt, jedoch waren die Schließwerte falsch. Meine Abfrage wählt den Schlusswert korrekt aus.

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' 

Dank Bernd Buffen für mich geben

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

bereits.

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`) 
); 
Verwandte Themen