Heim >Datenbank >MySQL-Tutorial >Wie können T-SQL-Zeitwerte effizient auf das nächste 15-Minuten-Intervall gerundet werden?

Wie können T-SQL-Zeitwerte effizient auf das nächste 15-Minuten-Intervall gerundet werden?

Susan Sarandon
Susan SarandonOriginal
2025-01-10 13:56:42616Durchsuche

How to Efficiently Round T-SQL Time Values to the Nearest 15-Minute Interval?

Genaue Berechnung: T-SQL-Zeitwerte auf das nächste 15-Minuten-Intervall runden

Beim Umgang mit zeitbasierten Daten in T-SQL ist es oft notwendig, Werte auf ein bestimmtes Zeitintervall zu runden. Eine häufige Anforderung besteht darin, HH:MM-Werte auf das nächste 15-Minuten-Intervall zu runden.

Effiziente Rundungsmethode

Eine effiziente Möglichkeit, Zeitwerte auf das nächste 15-Minuten-Intervall zu runden, ohne auf komplexe UDF- oder CASE-Anweisungen angewiesen zu sein, sondern stattdessen die Funktionen DATEADD und DATEDIFF zu verwenden. Diese Methode beinhaltet:

  • Verwenden Sie DATEDIFF, um die Differenz zwischen einem bestimmten Zeitwert und dem Nulldatum (0) zu berechnen.
  • Teilen Sie die Differenz durch eine ganzzahlige Division durch 15, um zu ermitteln, wie viele 15-Minuten-Intervalle vergangen sind.
  • Verwenden Sie DATEADD, um das Ergebnis mit 15 zu multiplizieren und die entsprechende Anzahl an Minuten zum Nulldatum hinzuzufügen.

Beispiel

Wenden Sie diese Methode auf Ihren spezifischen Berechnungsbedarf mit den Funktionen CONVERT, DATEADD und DATEDIFF an und Sie erhalten die folgende Abfrage:

<code class="language-sql">SELECT DATEADD(MINUTE, ROUND(DATEDIFF(MINUTE, 0, CONVERT(CHAR(8), DATEADD(n, SUM(DATEDIFF(n, starttime, stoptime)), 0), 108)) / 15.0, 0) * 15, 0)</code>

Diese Berechnung rundet den HH:MM-Zeitwert genau auf das nächste 15-Minuten-Intervall und stellt so sicher, dass ein Wert wie 00:08:00 zu 00:15:00 und 00:07:00 zu 00:00:00 wird.

Andere Methoden

Während die Methoden DATEADD und DATEDIFF effizient und genau sind, gibt es mehrere andere Methoden, die Sie zum Runden von Zeitwerten in T-SQL in Betracht ziehen können:

  • Verwenden Sie die ROUND-Funktion und geben Sie das Intervall an:

    <code class="language-sql">  ROUND(time_value, 15)</code>
  • Verwenden der FLOOR-Funktion von SQL Server 2012:

    <code class="language-sql">  FLOOR(DATEADD(MINUTE, time_value, 0))</code>

Das obige ist der detaillierte Inhalt vonWie können T-SQL-Zeitwerte effizient auf das nächste 15-Minuten-Intervall gerundet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn