Arrondir les valeurs HH:MM à l'intervalle de 15 minutes le plus proche en T-SQL
L'arrondi à un intervalle spécifique est une tâche courante lorsque l'on travaille avec des valeurs temporelles. Cet article explore une méthode T-SQL élégante pour arrondir les valeurs HH:MM à l'intervalle de 15 minutes le plus proche sans s'appuyer sur des fonctions définies par l'utilisateur (UDF) ou des instructions case.
Solution :
La clé de cette technique est d'utiliser les fonctions datediff()
et dateadd()
pour manipuler les composants de la date tout en ignorant les secondes. Nous pouvons déterminer le nombre de minutes écoulées en calculant la différence entre la date et l'heure d'entrée et une date fixe avec une composante temporelle de 00:00:00.
Cette valeur peut ensuite être divisée par 15 pour obtenir le nombre d'intervalles de 15 minutes. Le résultat est multiplié par 15 et rajouté à la date fixe à l'aide de dateadd()
pour donner une heure arrondie à l'intervalle de 15 minutes le plus proche.
Exemple de requête :
Considérons l'exemple de requête suivant :
<code class="language-sql">SELECT dateadd(minute, datediff(minute, '2023-01-01', GETDATE()) / 15 * 15, '2023-01-01') AS RoundedTime</code>
Remplacer GETDATE()
par la valeur datetime souhaitée renverra la valeur HH:MM arrondie comme ceci :
<code>| 输入时间 | 舍入时间 | |---|---| | 00:08:00 | 00:15:00 | | 00:07:00 | 00:00:00 | | 01:59:00 | 02:00:00 |</code>
Remarque :
Cette approche garantit un comportement d'arrondi cohérent quelle que soit la valeur de temps d'entrée. Cela évite également les erreurs potentielles de débordement lorsqu’il s’agit de plages de dates plus grandes. Bien que cela ne nécessite pas de distribution, une date correctement fixée avec une composante temporelle de 00:00:00 doit être utilisée comme base de calcul.
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!