Zuerst benötigen Sie keine Unterabfrage.
Zweitens variieren Datum/Uhrzeit-Funktionen je nach Datenbank. Hier ist eine Methode, die zum Entfernen der Zeitkomponente eine date()
Funktion übernimmt:
SELECT DATE(install_time), COUNT(DISTINCT id)
FROM mytab
WHERE event = 'run' AND
install_time >= '2017-09-01' AND install_time < '2017-09-06'
GROUP BY DATE(install_time)
ORDER BY DATE(install_time);
Bitte beachte, dass ich auch das Datumsformat in ein Standardformat geändert - das funktioniert in den meisten Datenbanken. Und ich habe den zweiten Vergleich für install_time
geändert, um die Zeitkomponente zu berücksichtigen.
Hier sind einige der Mittel zum date()
Funktion (die in MySQL, SQLite, BigQuery und DB2 mindestens Werke):
- SQL Server:
cast(install_time as date)
- Postgres:
date_trunc('day', install_time)
- Oracle:
trunc(install_time)
- Teradata:
cast(install_time as format 'YYYYMMDD')
hängt o n die verwendete Datenbank. Einige Datenbanken haben eine 'date()' -Funktion, um 'datetime' in' date' zu konvertieren. –
Welche Version von SQL verwenden Sie? Die Antwort auf diese Frage ist sehr wichtig für Ihre Frage, da Datumsfunktionen sehr datenbankspezifisch sind. Oh, und bitte speichern Sie keine Daten als Text in diesem Format. –
Ich benutze 12 Version –