2010-10-23 2 views
3

Voici ma table. J'ai besoin d'une requête qui renvoie l'identifiant de décalage pour une durée spécifiée
Comment puis-je obtenir la valeur?Comparaison de l'heure dans SQL Server 2008

shift_ID shift_From    shift_To 
1   2010-09-21 10:00:00.000 2010-09-21 18:10:00.000 
2   2010-09-21 20:00:00.000 2010-09-21 05:00:00.000 

Supposons que je donne 2:00:00 comme entrée, je dois obtenir l'ID de décalage comme 1. Comment puis-je faire?

+0

il peut y avoir des changements sur des dates différentes sur le même temps que vous voulez tous leur ? – anivas

+0

@anivsa la date mentionnée ici n'est pas importante. Il n'y aura que deux entrées dans cette table. – kbvishnu

Répondre

3

Essayez:

SELECT shift_ID 
FROM time_shift 
WHERE 
DATEDIFF(hour, shift_From, shift_To) = 2 -- your input 

En savoir plus sur DATEDIFF on MSDN

Le premier argument est la partie de temps vous spécifiez à DATETIFF (heure, minute, seconde).

Si votre entrée est strictement similaire à 02:00:00, vous devez l'analyser pour déterminer ce que vous spécifiez comme premier argument.


Pour déterminer correspond la date spécifiée appartiennent entre 2 autres, utilisez:

SELECT shift_ID 
FROM time_shift 
WHERE 
    CAST(shift_From AS TIME) < CAST(@input AS TIME) 
AND 
    CAST(@input AS TIME) < CAST(shift_To AS TIME) 
-- you can specify operators inclusiveness, i.e. <= >= etc 
-- or 
CAST(@input AS TIME) BETWEEN (CAST(shift_From AS TIME), CAST(shift_To AS TIME)) 

En savoir plus sur TIME on MSDN

+0

J'ai besoin de vérifier si l'heure d'entrée est entre le décalage et le décalage de. DateDiff va renvoyer la durée de l'équipe – kbvishnu

+0

@Hari: Voir mon message mis à jour – abatishchev

+0

@abatishchev Ici, je veux comparer l'heure sans tenir compte de la date.Votre requête n'a rien retourné :( – kbvishnu