2011-01-07 5 views
1

Je suis un service de requêtes Web qui retourne une date dans ce format: Jeu 6 janvier 2011 12:17:19 CSTConversion d'une chaîne à une date

je dois le convertir en une valeur datetime compatible avec SQL Server 2008. Des idées?

+5

Club de la personne qui a décidé de renvoyer la date dans ce format? – LittleBobbyTables

+1

Quelle langue utilisez-vous? Il existe différentes approches que vous pouvez utiliser mais cela dépend de votre choix de langue. –

Répondre

0

Tout d'abord, pouvez-vous demander au développeur de services Web de renvoyer une date-heure un peu plus standardisée? De préférence UTC ou quelque chose comme ça?

Sinon, vous pouvez le faire correctement dans SQL Server si vous le souhaitez. Vous pouvez utiliser et quelques sous-chaînes hypothèses pour obtenir la conversion suivante:

DECLARE @date nvarchar(50) 
SET @date = 'Thu Jan 06 12:17:19 CST 2011' 

PRINT @date 

PRINT cast(right(@date, 4) + '/' + 
    substring(@date, 5, 3) + '/' + 
    substring(@date, 9, 2) + ' ' + 
    substring(@date, 12, 8) as datetime) 

Il ne suppose que le mois sera toujours dans un format de 3 caractères. L'inconvénient de tout cela est la partie CST - si l'heure de retour est différente de votre fuseau horaire, l'heure n'est pas valide.

L'exécution de cette retournera:

Thu Jan 06 12:17:19 CST 2011 
2011/01/06 12:17:19 
+0

Je suppose que TZoffset pourrait être utilisé avec une instruction CASE pour évaluer le fuseau horaire. Je l'ai écrit une fois dans le code Delphi ... il est LONG en raison de tous les noms possibles pour les fuseaux horaires, mais fonctionne. – IamIC