2012-07-26 2 views
0

J'ai une date comme varchar sous la formeQuel format datetime utiliser SQL Server

DD/MM/YYYY HH:MM:SS AM 

par exemple

16/3/2012 4:39:26 PM 

Je ne vois pas une option de format valide pour CONVERT() dans le MSDN page

Est-ce que je manque quelque chose ou devrai-je reformater le champ varchar premier?

Edit:

Rectifié le format, désolé

+3

@AaronBertrand - Ce serait hextember. –

+0

@MattWhitfield Je vais devoir mettre cela sur mon calendrier. –

+0

OK, donc il ressemble à une mise à jour précédente pour convertir les lettres grecques en AM/PM était le problème. Merci pour les réponses mais j'aurais dû regarder un peu plus dans le problème – Jaloopa

Répondre

5

Une fois que vous obtenez votre histoire droite, vous aurez envie de posséder un:

-- if you really meant dd/mm/yyyy then: 

SELECT CONVERT(DATETIME, '16/3/2012 4:39:26 PM', 103); 

-- if you really meant mm/dd/yyyy then: 

SELECT CONVERT(DATETIME, '3/16/2012 4:39:26 PM', 101); 

Mais d'accord avec Madhivanan. Ne stockez pas les dates en utilisant le mauvais type de données, et si vous le devez, utilisez un format non ambigu!

+0

Répondu à la question que j'ai posée, même si elle s'est avérée être la mauvaise question. – Jaloopa

3
  1. Toujours utiliser une bonne DATETIME type de données pour stocker les dates
  2. YYYYMMDD et YYYYMMDD HH:MM:SS sont des formats de date non ambigu

Pour plus d'informations, reportez-vous cette

http://beyondrelational.com/modules/2/blogs/70/posts/10898/understanding-datetime-column-part-ii.aspx

+0

Malheureusement, il s'agit d'une importation à partir d'un fichier sur lequel je n'ai aucun contrôle. Sinon, je ferais en sorte d'utiliser un format non ambigu – Jaloopa

-2

Cela fonctionne.

DECLARE @dt varchar(100)='2012/3/16 4:39:26 PM' 
select convert(datetime,@dt,101) 
+1

Mais ce n'est pas ** le format d'entrée (chaîne) que l'OP a ..... –

+0

utiliser 103 comme option dans la fonction de conversion – AnandPhadke