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