Converta a coluna Varchar em SmallDateTime
-
27-09-2019 - |
Pergunta
Eu tenho uma tabela com mais de 800 registros. Nesta tabela, tenho uma coluna chamada 'dados' de varchar (10) datatype que contém datas em dd.mm.yyyy Format.Eu quero convertê -lo em SmallDateTime.
Tentei convertê -lo usando o Enterprise Management Studio Express, mas recebo este erro:
The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.
Como posso convertê -lo?
Solução
Eu acho que você precisará fazer uma pequena manipulação de cordas para fazer com que isso funcione, pois acho que o SQL espera 'mm.dd.yyyy'. Portanto, atualize sua tabela para virar o mês e o dia primeiro, depois a conversão deve passar.
update YourTable
set Data = SUBSTRING(Data,4,3) + LEFT(Data,3) + RIGHT(Data,4)
Outras dicas
Você pode usar:
SELECT ID, CAST(VarcharCol As SmallDateTime) as DateTimeCol From Test1
Isso retornará uma tabela com valores de varcharcol como tempo pequeno e atualizará o conteúdo do VARCHARCOL com os novos valores.
Se você não quer conversão implícita para SmallDateTime, você deveria usar Converter e o argumento estilo.
dd.mm.yyyy formato corresponde ao estilo 104.
Por exemplo :
SELECT CONVERT(smalldatetime, '31.12.2018', 104) AS "Result"
Result
------
2018-12-31 00:00:00