Heim >Datenbank >MySQL-Tutorial >Wie rundet man HH:MM-Zeitwerte in T-SQL auf die nächsten 15 Minuten?
Runden Sie HH:MM-Werte auf das nächste 15-Minuten-Intervall in T-SQL
Das Runden auf ein bestimmtes Intervall ist eine häufige Aufgabe bei der Arbeit mit Zeitwerten. In diesem Artikel wird eine elegante T-SQL-Methode zum Runden von HH:MM-Werten auf das nächste 15-Minuten-Intervall untersucht, ohne auf benutzerdefinierte Funktionen (UDFs) oder Case-Anweisungen angewiesen zu sein.
Lösung:
Der Schlüssel zu dieser Technik besteht darin, die Funktionen datediff()
und dateadd()
zu verwenden, um die Datumskomponenten zu manipulieren und dabei die Sekunden zu ignorieren. Wir können die Anzahl der verstrichenen Minuten ermitteln, indem wir die Differenz zwischen der eingegebenen Datumszeit und einem festen Datum mit einer Zeitkomponente von 00:00:00 berechnen.
Dieser Wert kann dann durch 15 geteilt werden, um die Anzahl der 15-Minuten-Intervalle zu erhalten. Das Ergebnis wird mit 15 multipliziert und mit dateadd()
wieder zum festen Datum addiert, um eine gerundete Zeit zu erhalten, die auf das nächste 15-Minuten-Intervall gerundet ist.
Beispielabfrage:
Betrachten Sie die folgende Beispielabfrage:
<code class="language-sql">SELECT dateadd(minute, datediff(minute, '2023-01-01', GETDATE()) / 15 * 15, '2023-01-01') AS RoundedTime</code>
Wenn Sie GETDATE()
durch den gewünschten Datums-/Uhrzeitwert ersetzen, wird der gerundete HH:MM-Wert wie folgt zurückgegeben:
<code>| 输入时间 | 舍入时间 | |---|---| | 00:08:00 | 00:15:00 | | 00:07:00 | 00:00:00 | | 01:59:00 | 02:00:00 |</code>
Hinweis:
Dieser Ansatz gewährleistet ein konsistentes Rundungsverhalten unabhängig vom Eingabezeitwert. Außerdem werden potenzielle Überlauffehler beim Umgang mit größeren Datumsbereichen vermieden. Eine Besetzung ist zwar nicht erforderlich, jedoch muss der Berechnung ein entsprechend festgelegtes Datum mit einem Zeitanteil von 00:00:00 zugrunde gelegt werden.
Das obige ist der detaillierte Inhalt vonWie rundet man HH:MM-Zeitwerte in T-SQL auf die nächsten 15 Minuten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!