2017-10-22 19 views
0

ich Abfrage erstellt!wie Änderung Datumsformat in sql

SELECT install_time, Count(id) 
FROM (SELECT DISTINCT install_time, id 
FROM mytab 
where event='run' 
and install_time>='09.01.2017' and install_time<='09.05.2017') 
GROUP BY install_time 

aber install_time hat dieses Format wie 09-05-2017 5:34:23 aber ich brauche dieses Format ohne Stunden, Minuten und Sekunden

09-05-2017 

Wie dieses Datumsformat ändern?

+2

hängt o n die verwendete Datenbank. Einige Datenbanken haben eine 'date()' -Funktion, um 'datetime' in' date' zu ​​konvertieren. –

+1

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. –

+0

Ich benutze 12 Version –

Antwort

2

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')
+1

es lohnt sich, Bedingungen zu gruppieren 'event = 'run' UND (install_time> = '2017-09-01' und install_time <= '2017-09-05')' – RomanPerekhrest

+0

danke, es funktioniert –