2013-10-11 9 views
7

Sto cercando di convertire una data in una colonna varchar nel formato dd/mm/yyyy nel formato datetime dd/mm/yyyy, così poi posso correre Periodo query sui dati .Converti varchar gg/mm/aaaa al gg/mm/aaaa datetime

Finora ho il seguente, che non funziona

CONVERT(varchar, CAST(date_started AS datetime), 103) 

Ho anche provato

convert(date_started as datetime, 103) 

ho bisogno di assicurarsi che l'uscita è dd/mm/yyyy come siamo nel Regno Unito e non il formato di mm/dd/yyyy

+7

YU NO DATA STORE AS APPUNTAMENTO? – ediblecode

+0

non ho, sto lavorando con un sistema che non è mio – Stew

risposta

18

Penso che tu sia dopo questo:

CONVERT(datetime, date_as_string, 103) 

avviso, che non ha datetime qualsiasi formato. Pensi alla sua presentazione. Per ottenere i dati di datetime in un formato appropriato è possibile utilizzare

CONVERT(varchar, date_as_datetime, 103) 
+0

Questo è quello che ho avuto prima, mi dispiace. il mio errore Questo converte anche, ma quando faccio un> '01/06/2013 'alla data di vedere le date di gennaio. – Stew

+0

> CONVERT (data/ora, '01/06/2013 ', 103) - quindi tutto è in datetime e il confronto viene eseguito su tipi di dati datetime. –

+0

Il mio amico è un salvatore :) che ha funzionato a meraviglia grazie – Stew

0

Prova di questo codice:

CONVERT(varchar(15), date_started, 103) 
+0

Non ha funzionato im paura, è stato convertito ma quando ho aggiunto la parte> '01/06/2013 ', stavo vedendo le date nel 2011 – Stew

+0

@ Stete cosa vuoi significa con "> '01/06/2013 '" - parte non hai menzionato nulla nel tuo OP cosa hai fatto con questo? – DrCopyPaste

+0

selezionare date_started da parte del personale WHERE (CONVERT (datetime, date_started, 103)> '01/06/2013') quando faccio questo im vedendo le date nel mese di gennaio, non dopo 1 giugno 2013 – Stew

0

penso che più accurata è la seguente sintassi:

SELECT CONVERT(CHAR(10), GETDATE(), 103) 

aggiungo SELECT e GETDATE() a scopo di test istantanei :)

0

Se si desidera restituire un formato gg/mm/aaaa, quindi utilizzare 101 invece di 103: CONVERT (VARCHAR (10), [MyDate], 101)