D'abord vous devriez trouver un moyen de convertir votre format en datetime
. La sous-requête ci-dessous fait cela en le faisant ressembler à une date canonique ODBC, puis en appelant convert
. Ensuite, vous pouvez combiner plus convert
avec datediff
pour obtenir votre format de sortie désiré.
select convert(varchar, startrun, 105) + ' ' +
substring(convert(varchar, startrun, 109), 13, 8) + ' ' +
substring(convert(varchar, startrun, 109), 25, 2)
, convert(varchar, endrun, 105) + ' ' +
substring(convert(varchar, endrun, 109), 13, 8) + ' ' +
substring(convert(varchar, endrun, 109), 25, 2)
, substring('0' + cast(datediff(hh, startrun, endrun)
as varchar), 1, 2) + ':' +
substring('0' + cast(datediff(mi, startrun, endrun) % 60
as varchar), 1, 2) + ':' +
substring('0' + cast(datediff(s, startrun, endrun) % 60*60
as varchar), 1, 2)
from (
select convert(datetime,
substring(startrun,1,4) + '-' +
substring(startrun,5,2) + '-' +
substring(startrun,7,2) + ' ' +
substring(startrun,9,2) + ':' +
substring(startrun,11,2) + ':' +
substring(startrun,13,2),
120) as startrun
, convert(datetime,
substring(endrun,1,4) + '-' +
substring(endrun,5,2) + '-' +
substring(endrun,7,2) + ' ' +
substring(endrun,9,2) + ':' +
substring(endrun,11,2) + ':' +
substring(endrun,13,2),
120) as endrun
from @YourTable
) as SubQueryAlias
est ici un working example at SE Data. Voir this question pour exporter le résultat d'une requête dans un fichier CSV.
Qu'avez-vous essayé? Qu'est-ce qui n'a pas fonctionné? Où exactement avez-vous des difficultés? – Oded
En ignorant le fait que cela devrait être datetime, pourquoi utiliser ensuite varchar pour les données de caractères de longueur fixe? – gbn
Approuvé gbn. Datetime ou au moins bigint (8 octets de toute façon). Datetime rendrait la solution beaucoup moins compliquée. – brian