Rundet einen Datetime-Wert auf die nächste halbe Stunde herunter

8

Ich habe die Anforderung, einen datetime2-Wert auf die nächste halbe Stunde zu runden. Zum Beispiel würde '10 / 17/2013 12: 10: 00.123 'auf '10 / 17/2013 12: 00: 00.0' runden und '10 / 17/2013 12: 34: 17.123 'würde auf den 17.10 / 2013 12: 30: 00.0 '. Mein erster Gedanke war, eine UDF zu erstellen, die das Datum und die Zeit auseinander bricht und es so macht. Ich frage mich jedoch, ob so etwas in einer einzigen T-SQL-Anweisung gemacht werden kann?

Ich verwende SQL Server 2012 und der Datentyp der Spalte ist ein dateTime2 (das nicht in einen Gleitkommawert konvertiert werden kann!)

    
Hosea146 17.10.2013, 13:02
quelle

5 Antworten

8

Die Antwort von Ian ist gut, aber es enthält eine unnötige Konvertierung. Ich schlage vor,

%Vor%

Wenn Sie auf die nächste halbe Stunde runden möchten, anstatt immer aufzurunden, verwenden Sie

%Vor%     
Twinkles 17.10.2013, 13:46
quelle
1

Wie wäre es damit?

%Vor%     
Andrew 17.10.2013 13:25
quelle
0
%Vor%

BEARBEITEN

Funktioniert besser, wenn Sie smalldatetime verwenden, um die zusätzliche Genauigkeit zu vermeiden

%Vor%     
BlueMonkMN 17.10.2013 13:34
quelle
0

Hier ist ein Weg, es zu tun:

%Vor%     
Steve Kass 17.10.2013 19:59
quelle
0

Hier ist ein etwas anderer Ansatz, den ich benutzte, als ich auf das nächste 5-Minuten-Intervall abrunden musste. Es gibt wahrscheinlich einen Weg, dies weiter zu vereinfachen, aber zumindest hat mir das geholfen, was ich brauchte.

%Vor%     
acatala 18.08.2016 15:41
quelle

Tags und Links