T-SQL : arrondi temporel précis aux 15 minutes les plus proches
Arrondir efficacement les valeurs de temps à l'incrément de 15 minutes le plus proche est une tâche courante dans la base de données. Cet article présente une approche rationalisée utilisant les fonctions T-SQL intégrées, évitant les complexités des fonctions définies par l'utilisateur ou des instructions CASE.
L'objectif est d'arrondir les valeurs horaires au quart d'heure le plus proche. Par exemple, "00:08:00" est arrondi à "00:15:00", tandis que "00:07:00" est arrondi à "00:00:00".
Une méthode très efficace consiste à combiner les fonctions DATETADD
et DATEDIFF
. La formule exploite la différence en minutes à partir d'un point de départ fixe (par exemple, « 01-01-2000 ») pour calculer l'intervalle de 15 minutes le plus proche. Cela évite les DATEDIFF
problèmes potentiels de dépassement d'entier qui peuvent survenir avec de très grandes plages de dates.
La formule fonctionne comme suit :
DATEDIFF(minute, '2000-01-01', YourTimeValue)
: Calcule le nombre total de minutes entre une date fixe et votre valeur horaire.
/ 15
: Divise le total des minutes par 15 pour déterminer le nombre d'intervalles de 15 minutes.
* 15
: Multiplie le résultat par 15 pour obtenir le multiple de 15 minutes le plus proche.
DATETADD(minute, ..., '2000-01-01')
: Ajoute les minutes calculées à la date fixe, donnant la valeur de temps arrondie.
Par conséquent, la formule complète pour arrondir aux 15 minutes près est :
<code class="language-sql">DATETADD(minute, (DATEDIFF(minute, '2000-01-01', YourTimeValue) / 15) * 15, '2000-01-01')</code>
Remplacez YourTimeValue
par votre colonne ou variable d'heure réelle.
Cette technique est adaptable à d'autres intervalles d'arrondi. Par exemple, pour arrondir aux 30 secondes les plus proches, remplacez simplement second
par minute
et 30
par 15
dans la formule. La clé consiste à utiliser une date de début fixe pour éviter les erreurs de débordement. Cette approche fournit une solution concise et efficace pour un arrondi temporel précis dans T-SQL.
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!