Maison >base de données >tutoriel mysql >Comment puis-je comparer efficacement uniquement la partie temporelle des valeurs DATETIME dans SQL Server ?

Comment puis-je comparer efficacement uniquement la partie temporelle des valeurs DATETIME dans SQL Server ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-26 01:08:09299parcourir

How Can I Efficiently Compare Only the Time Portion of DATETIME Values in SQL Server?

Comparaison des valeurs temporelles dans SQL Server

Lors de la comparaison des valeurs temporelles stockées dans un champ datetime, il est essentiel de déterminer si le composant date doit être inclus dans la comparaison. Dans le scénario fourni, l'utilisateur vise à comparer uniquement la partie heure, à l'exclusion de la date.

La requête proposée utilisant la fonction CONVERT pour convertir les valeurs de temps en chaîne peut fonctionner, mais elle peut être inefficace. Une solution plus optimale consiste à exploiter la représentation interne à virgule flottante des valeurs datetime dans SQL Server.

Pour effectuer efficacement une comparaison temporelle uniquement, nous pouvons :

  1. Convertir la datetime valeurs à flotter à l'aide de la fonction CAST.
  2. Soustrayez la partie fractionnaire de chaque flotteur (composante temporelle) à l'aide du MOD opérateur.

Par exemple, étant donné deux valeurs datetime @first et @second :

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;

Cette approche compare directement les valeurs de temps sans impliquer le composant de date, fournissant ainsi des informations précises et efficaces. résultats.

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