SQL Server converter Varchar para data e hora

Eu tenho este formato de data: 2011-09-28 18:01:00 (em varchar), e eu quero convertê-lo em datetime mudando para este formato 28-09-2011 18:01:00. Como eu posso fazer isso?

 SELECT CONVERT(Datetime, '2011-09-28 18:01:00', 120) -- to convert it to Datetime SELECT CONVERT( VARCHAR(30), @date ,105) -- italian format [28-09-2011 18:01:00] + ' ' + SELECT CONVERT( VARCHAR(30), @date ,108 ) -- full date [with time/minutes/sec] 

Como isso

 DECLARE @date DATETIME SET @date = '2011-09-28 18:01:00' select convert(varchar, @date,105) + ' ' + convert(varchar, @date,108) 

este site mostra várias opções de formatação.

Exemplo:

 SELECT CONVERT(VARCHAR(10), GETDATE(), 105) 

Você pode ter todos os estilos diferentes para datetime conversion e datetime conversion :

http://www.w3schools.com/sql/func_convert.asp

Isto tem um intervalo de valores: –

 CONVERT(data_type(length),expression,style) 

Para valores de estilo,
Escolha quem você precisa como eu precisava 106.

Com toda a minha resposta existente tem um link específico para o site de ajuda para que até mesmo um iniciante possa se referir. Isso é mais útil

 SELECT CONVERT(VARCHAR(10), GETDATE(), 105) + ' ' + CONVERT(VARCHAR(10), GETDATE(), 108) 

Você poderia fazer desta forma, mas deixa como um varchar

 declare @s varchar(50) set @s = '2011-09-28 18:01:00' select convert(varchar, cast(@s as datetime), 105) + RIGHT(@s, 9) 

ou

 select convert(varchar(20), @s, 105) 

Como já foi dito, o datetime não possui formato representacional de formato / string.

Você pode alterar a saída da string com alguma formatação.

Para converter sua string em um datetime:

 declare @date nvarchar(25) set @date = '2011-09-28 18:01:00' -- To datetime datatype SELECT CONVERT(datetime, @date) 

Dá:

 ----------------------- 2011-09-28 18:01:00.000 (1 row(s) affected) 

Para converter isso para a string que você deseja:

 -- To VARCHAR of your desired format SELECT CONVERT(VARCHAR(10), CONVERT(datetime, @date), 105) +' '+ CONVERT(VARCHAR(8), CONVERT(datetime, @date), 108) 

Dá:

 ------------------- 28-09-2011 18:01:00 (1 row(s) affected) 

Experimente o abaixo

 select Convert(Varchar(50),yourcolumn,103) as Converted_Date from yourtbl 

Esta web tem alguns bons exemplos para converter qualquer varchar em data ou datetime