Erhalte nur das Datum aus der Gruppierung in der DateTime-Spalte in SQL Server

8

Ich muss einige Datensätze basierend auf einem Datum gruppieren, aber es ist ein Datums- und Zeitfeld und ich muss den Zeitteil von is ignorieren und nur nach dem Datumsteil gruppieren - hier ist mein SQL wie es ist:

%Vor%     
Slee 12.02.2009, 19:04
quelle

7 Antworten

22

Sie können folgendermaßen gruppieren:

%Vor%

Ich füge das in eine skalare benutzerdefinierte Funktion ein, um es einfacher zu machen:

%Vor%

Was würdest du dann so nennen:

%Vor%

Beachten Sie, dass Sie möglicherweise die Werte in der SELECT-Klausel ändern müssen, da Sie jetzt nach etwas anderem gruppieren.

    
casperOne 12.02.2009, 19:08
quelle
11
%Vor%

oder

%Vor%     
mson 12.02.2009 19:07
quelle
2

Was ist damit?

%Vor%     
Frederik Gheysels 12.02.2009 19:13
quelle
2

Sie können den Typ Datum mit convert oder cast verwenden.

%Vor%

oder

%Vor%     
Serj-Tm 28.12.2015 12:35
quelle
0

Siehe diesen Link für drei verschiedene Versionen einer Nur-Datum-Funktion . Hier ist der, den ich am Ende benutzt habe:

%Vor%     
Mark Ransom 12.02.2009 19:12
quelle
0

Sie können auch einfach die alte SQL-Konvertierungsfunktion verwenden. Mit dem letzten Argument können Sie vordefinierte Datumsformate bereitstellen, von denen einige die Zeit entfernen. Hier ist die überarbeitete Abfrage.

%Vor%     
James 12.02.2009 19:13
quelle
0

Wenn es nur um Gruppierung geht, können Sie den Datetime-Ausdruck auch in int umwandeln.

Simple CAST(datetime AS int) rundet die Datetime tatsächlich auf das nächste Datum ab, anstatt den Zeitteil abzulegen. Von daher,

%Vor%

Ein anderer Weg:

%Vor%

(Im Gegensatz zu den Datumsangaben werden Floats abgeschnitten, wenn sie in int umgewandelt werden.)

Ich bevorzuge das erstere, da es kürzer ist. Ich bin mir aber nicht sicher, was in Bezug auf die Leistung besser ist. Dennoch kann das Problem wahrscheinlich nur bei sehr großen Datenfeldern auftreten.

    
Andy M 03.04.2009 06:45
quelle

Tags und Links