Maison >base de données >tutoriel mysql >Comment arrondir efficacement les valeurs de temps T-SQL à l'intervalle de 15 minutes le plus proche ?

Comment arrondir efficacement les valeurs de temps T-SQL à l'intervalle de 15 minutes le plus proche ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-10 13:56:42657parcourir

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

Calcul exact : Arrondir les valeurs de temps T-SQL à l'intervalle de 15 minutes le plus proche

Lorsque vous traitez des données temporelles dans T-SQL, il est souvent nécessaire d'arrondir les valeurs à un intervalle de temps spécifique. Une exigence courante consiste à arrondir les valeurs HH:MM à l'intervalle de 15 minutes le plus proche.

Méthode d'arrondi efficace

Un moyen efficace d'arrondir les valeurs de temps à l'intervalle de 15 minutes le plus proche sans s'appuyer sur des instructions UDF ou CASE complexes, mais en utilisant à la place les fonctions DATEADD et DATEDIFF. Cette méthode comprend :

  • Utilisez DATEDIFF pour calculer la différence entre une valeur de temps donnée et la date zéro (0).
  • Utilisez la division entière pour diviser la différence par 15 afin de déterminer combien d'intervalles de 15 minutes se sont écoulés.
  • Utilisez DATEADD pour multiplier le résultat par 15 et ajouter le nombre approprié de minutes à la date zéro.

Exemple

Appliquez cette méthode à votre besoin spécifique de calculs à l'aide des fonctions CONVERT, DATEADD et DATEDIFF et vous obtiendrez la requête suivante :

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

Ce calcul arrondit la valeur temporelle HH:MM exactement à l'intervalle de 15 minutes le plus proche, garantissant qu'une valeur telle que 00:08:00 devient 00:15:00 et 00:07:00 devient 00 : 00:00.

Autres méthodes

Bien que les méthodes DATEADD et DATEDIFF soient efficaces et précises, il existe plusieurs autres méthodes que vous pouvez envisager pour arrondir les valeurs de temps dans T-SQL :

  • Utilisez la fonction ROUND et précisez l'intervalle :

    <code class="language-sql">  ROUND(time_value, 15)</code>
  • Utilisation de la fonction FLOOR de SQL Server 2012 :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn