2011-09-15 3 views
1

J'essaie d'obtenir le temps passé sur quelque chose. J'ai le DateTime pour le début et la fin de la chose dans deux colonnes. Je peux le faire:SQL Server 2005 DateTime math

cnext.CreatedDate - c.CreatedDate 

qui se traduit par quelque chose comme ceci:

1900-01-01 00:00:19.190 

ce qui signifie qu'ils ont passé 19.19 secondes sur la chose. C'est super pour chaque ligne, mais je voudrais groupe par la chose spécifique et résumer le temps passé sur chaque chose:

SUM(cnext.CreatedDate - c.CreatedDate) 

mais je reçois un:

Operand data type datetime is invalid for sum operator. 

Comment puis-je obtenir le temps total est je ne peux pas résumer les types DateTime?

Répondre

3

Vous ne pouvez pas utiliser les valeurs de date/heure SUM. C'est comme prendre la racine carrée d'une chaîne.

Essayez:

SUM(DATEDIFF(SECOND, c.CreatedDate, cnext.CreatedDate)) 

Ou si vous voulez plus de précision:

SUM(DATEDIFF(MILLISECOND, c.CreatedDate, cnext.CreatedDate)) 
+0

+1. Le fait que l'affiche semble indiquer qu'il n'a aucune date? –

0

Si la potion de la date est 1/1/1900, convertir les dates de flotteurs, les soustraire, et convertir le résultat à Datetime.