2010-12-01 4 views
1

Je suis confronté à l'obtention du dernier enregistrement (le plus récent) pour une partie, et mon seul moyen est de le faire en utilisant une approche "date maximale".Date et heure dans des colonnes séparées, heure au deuxième format, comment obtenir «max datetime»?

Voici un schéma de base (et des données d'échantillon):

ldDate     ldTime ldPart   id 
2010-10-26 00:00:00.000 52867 90-R6600-4100 186 
2010-11-01 00:00:00.000 24634 90-R6600-4100 187 
2010-11-24 00:00:00.000 58785 90-R6600-4100 194 
2010-11-24 00:00:00.000 58771 90-R6600-4100 195 
2010-11-17 00:00:00.000 29588 90-R6600-4100 201 
2010-11-08 00:00:00.000 29196 90-R6600-4100 282 
2010-11-08 00:00:00.000 29640 90-R6600-4100 290 
2010-10-19 00:00:00.000 58695 90-R6600-4100 350 
2010-09-22 00:00:00.000 32742 BH4354-F0  338 
2010-09-22 00:00:00.000 32504 BH4354-F0  340 
2010-11-17 00:00:00.000 31157 BH4354-F0  206 
2010-11-08 00:00:00.000 27601 BH4354-F0  218 
2010-11-08 00:00:00.000 27865 BH4354-F0  21 
2010-09-22 00:00:00.000 23264 BR6950-F0  70 
2010-09-22 00:00:00.000 23270 BR6950-F0  77 
2010-09-24 00:00:00.000 27781 BR6950-F0  97 
2010-11-24 00:00:00.000 57735 BR6950-F0  196 

Ce que j'ai ci-dessus est un ldDate sans temps, et un ldTime mais pas un bon HH: MM: représentation SS , il est secondes depuis minuit, la première ligne serait:

2010-10-26 00:00:00.000 52867 ou si je convertir le temps:

52 867 secondes = 14.6852778 heures ~ 2010-10-26 14:68:52

Existe-t-il un moyen propre de combiner les deux colonnes dans ma requête SQL? Je veux faire un max simple (ldCombinedDate) et un groupe par ldPart (numéro de pièce).

L'ID, est presque inutile, alors ignorez-le, il est là maintenant pour quel ordre un enregistrement a été inséré, rien d'autre, pourrait être utilisé pour une requête imbriquée peut-être? Remarque: L'ordre d'entrée ne signifie pas la date ... dernière

Merci ...

+2

Vous semblez avoir 68 minutes dans votre heure ... – Oded

+0

thats comment je roule .. en toute honnêteté tho, je ne me soucie pas de ce que les minutes sont, comme je veux la date/heure max. – Jakub

Répondre

4

L'expression

DATEADD(second, ldTime, ldDate) 

retournera la date combinée. Donc, je suppose que vous voulez quelque chose comme ceci:

SELECT ldPart, MAX(DATEADD(second, ldTime, ldDate)) AS MaxCombinedDate 
    FROM yourtable 
GROUP BY ldPart 
+0

+1 gentil et simple, aime, juste ce dont j'avais besoin. – Jakub