2009-08-17 6 views
0

Utilisation d'Access 2003Comment convertir Varchar en Datetime?

Tableau

ENO Time 

001 020000 
001 040000 
001 220000 
002 030000 
002 050000 
005 230000 

ainsi de suite ...,

Temps type Date est Varchar dans la base de données. Comment convertir un Varchar en Datetime?

Ici, je veux obtenir un temps total pour l'ENO.

Select eno, sum (time) from table group by eno 

Il erreur comme montrant - critères de non-concordance type de données erreur

Expected Output 

001 26:00:00 
002 08:00:00 

ainsi de suite ...,

Besoin d'aide de requêtes.

Répondre

1

Il vaut mieux ne pas travailler en quelques secondes. Utilisez la fonction Mid() pour décomposer la chaîne et calculer le nombre de secondes, additionner les heures, puis formater le résultat comme vous le souhaitez. Si vous l'écrivez en une seule requête, vous devrez utiliser la même expression longue dans trois endroits différents, donc pour une meilleure lisibilité, je le ferais en deux requêtes. Le premier est:

SELECT eno, sum(val(mid(time,1,2))*3600+val(mid(time,3,2))*60+val(mid(time,5,2))) AS secs 
FROM table 
GROUP BY eno; 

Enregistrer cette requête dans l'accès en tant que "enosums", par exemple. La deuxième requête est:

SELECT eno, format(secs/3600, "00:") & format((secs/60 Mod 60), "00:") & format(secs Mod 60, "00") 
FROM enosums; 

La raison pour laquelle je suggère cette méthode est que même si vous parvenez à convertir en valeurs datetime (que vous pouvez faire en utilisant la fonction Mid() et l'opérateur de concaténation pour convertir le « HHMMSS » chaîne dans le format "hh: mm: ss" et ensuite appliquer la fonction TimeValue), il n'y a pas de moyen facile d'imprimer ceci dans le format de sortie dont vous avez besoin car la fonction Format() ne va que jusqu'à 23:59:59 puis retour à 00:00:00.

Questions connexes