2013-02-11 3 views
0

enter image description here En sql, j'écris une instruction select pour trouver les dates. je suis ici en incluant l'heure aussi ma déclaration choisie comme ceci ....trouver les dates entre deux dates avec des heures et des minutes? dans le serveur SQL?

    select * from test where   
(
(
(DATEDIFF (day,@dat1,req_frmdate)=0 or DATEDIFF (day,@dat2,req_todate)=0) 
and 
(DATEDIFF (HOUR,@dat1,req_frmdate)=0 or DATEDIFF (HOUR,@dat2,req_todate)=0) 
and 
(DATEDIFF (MINUTE,@dat1,req_frmdate)=0 or DATEDIFF (MINUTE,@dat2,req_todate)=0) 
)  
or 
    (
(@dat1 between req_frmdate and req_todate) or 
(@dat2 between req_frmdate and req_todate) or 
(req_frmdate between @dat1 and @dat2) or 
(req_todate between @dat1 and @dat2) 
)  
     ) 

mais quand je passe la date quelque temps il ne considère pas l'heure. cette requête est-elle correcte? quand je passe la date par exemple @ date1 = '2013-02-20 09:00' et @ date2 = '2013-02-20 12:00' mais il n'y a aucun enregistrement dans ma base de données sur cette date et l'heure il est un enregistrement dans ma base de données à req_frmdate = '2013-02-20 13:00' et req_todate = '2013-02-20 16:00'

dans la capture d'écran de ma table, j'ai cet enregistrement dans mon tableau, quand je passe les deux dates comme @ date1 = '2013-02-20 9:00' et @ date2 = '2013-02-20 12:00' l'enregistrement arrive dans ma déclaration de sélection, il ne devrait pas venir la date est différente, c'est la requête.

+0

Et quelle est la question exacte? – ryadavilli

+0

S'il vous plaît joindre votre sortie actuelle et souhaitée –

+0

Gil, je modifier ma question, et je joindre la capture d'écran s'il vous plaît trouver – Ssasidhar

Répondre

0

En supposant que vous voulez que les enregistrements afficheront uniquement si les deuxREQ_FRMDATE et REQ_TODATE sera entre les dates de vos deux paramètres, vous pouvez utiliser BETWEEN Article:

DECLARE @dat1 DATETIME SET @dat1 ='2013-02-20 09:00.000' 
DECLARE @dat2 DATETIME SET @dat2 ='2013-02-20 12:00.000' 
SELECT * 
FROM test 
WHERE 
    (req_frmdate BETWEEN @dat1 AND @dat2) 
    AND (req_todate BETWEEN @dat1 AND @dat2) 
+0

ça ne fonctionne pas si je passe @ date1 = '2013-02-20 13:00' et @ date2 = ' 2013-02-20 16:00 ' – Ssasidhar

+0

où l'enregistrement est là avec la date et l'heure – Ssasidhar

+0

si je passe @ date1 =' 2013-02-20 09:00 'et @ date2 =' 2013-02-20 11:00 ' le recod ne devrait pas afficher – Ssasidhar

Questions connexes