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?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top