Maison >base de données >tutoriel mysql >Comment comparer efficacement uniquement les valeurs temporelles dans SQL Server ?

Comment comparer efficacement uniquement les valeurs temporelles dans SQL Server ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-28 01:32:11177parcourir

How to Efficiently Compare Only Time Values in SQL Server?

Comparaison de l'heure dans SQL Server

Lors de la comparaison des valeurs de temps dans SQL Server, il est crucial de considérer uniquement la composante temporelle et de ne pas tenir compte de la date. Pour y parvenir, une approche légèrement différente est nécessaire par rapport à la comparaison standard entre les champs datetime.

Pour comparer efficacement les valeurs de temps, on peut tirer parti du fait que SQL Server stocke les dates sous forme de nombres à virgule flottante. Les chiffres avant la virgule représentent la date, tandis que ceux qui la suivent représentent l'heure.

Exemple :

declare @first datetime = '2009-04-30 19:47:16.123'
declare @second datetime = '2009-04-10 19:47:16.123'

select (cast(@first as float) - floor(cast(@first as float))) -
       (cast(@second as float) - floor(cast(@second as float)))
       as Difference

Dans cet exemple, les parties date des deux @ first et @second sont supprimés en soustrayant la partie entière de chaque représentation à virgule flottante à l'aide de floor(). Le résultat est une valeur fractionnaire représentant le décalage horaire, qui peut ensuite être utilisée à des fins de comparaison.

Explication :

  • cast (@first as float) - floor(cast (@first as float)) calcule la partie temporelle de @first au format à virgule flottante.
  • cast (@second as float) - floor(cast (@second as float)) fait la même chose pour @second.
  • La soustraction des parties temporelles donne la différence entre les deux heures.

Cette méthode est plus efficace que la conversion des valeurs datetime en chaînes pour comparaison, car cela évite une conversion de données inutile.

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