2012-10-29 3 views
0

J'ai besoin d'afficher datetime lorsque je sélectionne uniquement la date et l'heure. Parce que j'essaie d'exécuter SQL mais afficher tout datetime.Comment afficher datetime sélectionner uniquement dans Sql Server?

Tableau Emp:

EmpNo fullName 
00001 Midna 
00002 Klog 
00003 Porla 
00004 Seka 
00005 Mila 

Tableau tFile:

EmpNo cDate      cTime 
00001 2012-10-29 00:00:00.000 2012-10-29 07:52:00.000 
00001 2012-10-29 00:00:00.000 2012-10-29 19:00:00.000 
00002 2012-10-29 00:00:00.000 2012-10-29 07:40:00.000 
00002 2012-10-29 00:00:00.000 2012-10-29 19:32:00.000 
00005 2012-10-29 00:00:00.000 2012-10-29 07:58:00.000 
00005 2012-10-29 00:00:00.000 2012-10-29 18:35:00.000 

Ce code

SELECT 
    em.EmpNo as 'EmpNo', 
    case 
     when tf.cDate <> null then tf.cDate 
      else coalesce(tf.cDate, '2012-10-29') 
    end as 'cDate', 
    Min(tf.cTime) as 'timeIn', 
    Max(tf.cTime) as 'timeOut' 
FROM 
    tFile tf 
Full Outer join 
    Emp em On tf.EmpNo = em.EmpNo 
Group By 
    em.EmpNo,tf.cDate 
Order By 
    'EmpNo' 

renvoie ce résultat:

EmpNo cDate      timeIn      timeOut 
------------------------------------------------------------------------------------- 
00001 2012-10-21 00:00:00.000 2012-10-21 07:22:00.000 2012-10-21 17:35:00.000 
00001 2012-10-24 00:00:00.000 2012-10-24 07:30:00.000 2012-10-24 19:00:00.000 
00001 2012-10-29 00:00:00.000 2012-10-29 07:52:00.000 2012-10-29 19:00:00.000 
00002 2012-10-25 00:00:00.000 2012-10-25 07:58:00.000 2012-10-25 18:35:00.000 
00002 2012-10-22 00:00:00.000 2012-10-22 08:04:00.000 2012-10-22 17:55:00.000 
00002 2012-10-24 00:00:00.000 2012-10-24 08:00:00.000 2012-10-24 18:45:00.000 
00002 2012-10-29 00:00:00.000 2012-10-29 07:40:00.000 2012-10-29 19:32:00.000 
00003 2012-10-29 00:00:00.000 NULL      NULL 
00004 2012-10-29 00:00:00.000 NULL      NULL 
00005 2012-10-28 00:00:00.000 2012-10-28 07:30:00.000 2012-10-28 19:20:00.000 
00005 2012-10-27 00:00:00.000 2012-10-27 07:38:00.000 2012-10-27 19:30:00.000 
00005 2012-10-29 00:00:00.000 2012-10-29 07:58:00.000 2012-10-29 18:35:00.000 

Mais j'ai besoin de ce résultat:

Je sélectionne la date ex. 2012-10-29 alors j'ai besoin de montrer toutes les lignes avec 2012-10-29 seulement.

Mais certains Empno n'ont pas de données dans 2012-10-29 il est défini sur NULL.

EmpNo cDate      timeIn      timeOut 
--------------------------------------------------------------------------------------- 
00001 2012-10-29 00:00:00.000 2012-10-29 07:52:00.000 2012-10-29 19:00:00.000 
00002 2012-10-29 00:00:00.000 2012-10-29 07:40:00.000 2012-10-29 19:32:00.000 
00003 2012-10-29 00:00:00.000 NULL      NULL 
00004 2012-10-29 00:00:00.000 NULL      NULL 
00005 2012-10-29 00:00:00.000 2012-10-29 07:58:00.000 2012-10-29 18:35:00.000 

Merci pour votre temps. :)

+0

utilisation 'cast (AS nomchamp date)' pour récupérer uniquement la partie date. –

Répondre

0

qu'en pensez-vous?

where(datediff(dd, coalesce(cTime, getdate()), getdate()) = 0 

ou, si vous avez vraiment jamais envie de regarder Octobre Le 29:

where(datediff(dd, coalesce(cTime, '2012-10-29'), '2012-10-29') = 0 
+0

merci c'est du travail.:D – nettoon493

Questions connexes