2017-05-29 6 views
0

In einer SQL-Datenbank habe ich zwei Felder. Ein Wertfeld und ein Zeitstempelfeld. Ich möchte den Wert für den letzten Zeitstempel für jeden Tag erhalten. Zum Beispiel mit Datensätzen wie dieser:Wie erhalte ich den neuesten Zeitstempelwert pro Tag?

Value | Timestamp 
1   2017-05-26 14:38:48 
2   2017-05-26 15:38:48 
3   2017-05-26 16:38:48 
4   2017-05-29 14:38:48 
5   2017-05-29 15:38:48 
6   2017-05-29 16:38:48 

Ich möchte die zwei maximalen Werte pro Tag zurückgeben.

Value | Timestamp 
3   2017-05-26 16:38:48 
6   2017-05-29 16:38:48 

Antwort

1

können Sie die date Funktion verwenden, die das Datum Teil der Datetime-Spalte zurückgibt und die aktuelle Zeit pro Tag.

select * from tbl 
where timestampcol in (select max(timestampcol) 
         from tbl 
         group by date(timestampcol) 
        ) 
+0

Thank you so much. Ich wusste, dass es eine elegante Lösung gab, aber ich konnte es einfach nicht finden. Ich wusste nichts über die Datumsfunktion. – Randy

1

SQLite 3.7.11 oder später does the right thing ohne Unterabfrage:

SELECT Value, max(Timestamp) 
FROM MyTable 
GROUP BY date(Timestamp); 
Verwandte Themen