2011-09-19 2 views
0

Je suis confronté à un problème dans la conversion DateTime. Mon entrée est 22/09/2011, j'ai besoin de convertir en 20110922.Besoin d'aide sur la conversion DateTime dans Sql Server 2005

J'ai essayé le ci-dessous, mais a échoué. Sélectionnez CONVERT (VARCHAR (8), '09/22/2011', 112) DateConv

+0

Votre format d'entrée ressemble à une chaîne plutôt qu'à 'datetime'? –

+0

Non, ce n'est qu'une date/heure. – Naveenkumar

Répondre

3

Ici vous allez:

SET DATEFORMAT mdy 
SELECT CONVERT(VARCHAR(8), CAST('09/22/2011' as DATETIME) , 112) AS DateConv 

Si votre entrée est en fait une variable dateTime comme vous avez dit (mais didn « t show dans votre exemple de code), vous pouvez simplifier jusqu'à:

SELECT CONVERT(VARCHAR(8), @myDate , 112) AS DateConv 
+0

Echoue sous 'SET DATEFORMAT dmy' comme le mien! – Wil

+0

Que diriez-vous de cela (éditer)? La triche? Ma version originale supposait que la chaîne de date serait au format local. – JohnFx

+0

L'OP a clarifié qu'il s'agit d'un 'datetime' de toute façon, donc vos deux réponses n'ont pas besoin du littéral de chaîne au format ambigu et devraient fonctionner. –

1

cela fera l'affaire:

select year('09/22/2011') * 10000 + month('09/22/2011') * 100 + day('09/22/2011')

+0

Cela renvoie un int ... –

+0

Aaron c'est parce que 20110922 EST un INT: D – Wil

+0

Oui, compris. Je voulais juste clarifier parce que généralement lorsque le formatage a lieu pour la présentation, le résultat attendu est une chaîne. –

0

Sans aucune autre information, SQL interprète déjà le '09/22/2011 'comme un varchar, et passe simplement les données à travers (en ignorant l'argument de style de CONVERT). Si vous utilisez la ligne suivante:

SELECT CONVERT (VARCHAR (8), CAST ('09/22/2011' as DATETIME), 112) as DateConv 

il devrait fonctionner comme prévu, car il sera alors voir la valeur en tant que date '09/22/2011' . Si vous obteniez la date d'une colonne dans une table, il connaissait déjà le type et vous n'aurez pas à vous soucier de la partie CAST de l'expression, utilisez simplement le nom de la colonne.

Questions connexes