2011-05-20 3 views

Répondre

1
Set DateFormat DMY 
GO 
Select Cast(Stuff(Stuff(SomeValue, 3, 0, '-'), 6, 0, '-') As datetime) 
From MyData 
+0

En utilisant cette solution, devrais-je toujours mettre dateformat en DMY avant l'exécution? – jrara

+0

@jara - Oui car il assure que Cast interprète la position du mois et jour correctement indépendant du format de date par défaut sur le serveur – Thomas

+0

@jara - Sans DateFormat, sur une machine/serveur US par exemple, il voudrait interpréter la date comme MM-DD-YY au lieu de DD-MM-YY . – Thomas

1

Parce que ce format est non standard, utilisez

DECLARE @field char(6) 
SET @field = '231280' 
select convert(datetime, right(@field, 2) + substring(@field, 3, 2) + left(@field, 2) , 12) 
+0

Le construit le code des chaînes dans le mauvais ordre provoquant une erreur, mais l'idée de base était juste. J'ai corrigé le code et testé pour m'assurer que cela fonctionne. – JohnFx

+0

@JohnFx Je l'ai édité 5 secondes après l'avoir posté. J'ai nommé mon édition, "Doh". Puis, 9 minutes plus tard, vous avez fait la même chose :( – GSerg

1

Utilisez substring pour obtenir l'année, le mois et le jour, si l'année supérieure à 11 ajouter 19 si pas ajouter 20, pour obtenir l'année en format 2009 , mais ceci est votre requête juste au lieu de chaîne ajoutez votre nom de colonne

select CAST(
      CASE WHEN CAST(SUBSTRING('231280', 5, 2) AS INT) >11 
        THEN '19'+SUBSTRING('231280', 5, 2) 
        else '20'+SUBSTRING('231280', 5, 2) 
       END 
     +'-'+SUBSTRING('231280', 3, 2)+'-'+SUBSTRING('231280', 1, 2) as datetime) 
1

Il faudrait utiliser des jeux de jambes de sous-chaîne pour convertir votre chaîne en date format connue. Voici un exemple convertir la chaîne en forme 3, « British/français »:

declare @YourTable table (YourColumn varchar(50)) 
insert @YourTable 
      select '231280' 
union all select '121280' 
union all select '131185' 

select convert(datetime, substring(YourColumn,1,2) + '/' + 
    substring(YourColumn,3,2) + '/' + substring(YourColumn,5,2), 3) 
from @YourTable 
+0

Merci d'avoir donné un bon exemple! – jrara