Pregunta

Tengo un cliente proporcionado archivo que se carga en nuestra base de datos SQL Server.Este archivo contiene texto basado en los valores de fecha de decir(05102010) y tengo que leer de una base de datos de la columna y convertirlos en una fecha normal de tiempo value = '2010-05-10 00:00:00.000' como parte de un proceso de limpieza.

Cualquier orientación sería muy apreciada.

¿Fue útil?

Solución

Una forma utilizando

CONVERT(datetime,RIGHT(Column,4) + left(Column,4))

ejemplo

declare @s char(8)
select  @s = '05102010'
select CONVERT(datetime,RIGHT(@s,4) + left(@s,4))

Otros consejos

Trate:

SELECT 
    CONVERT(datetime,  RIGHT(YourColumn,4)
                       +LEFT(YourColumn,4)
           ) AS ProperDateTime
    FROM...

ejemplo de trabajo:

DECLARE @YourTable table (StringDate char(8))
INSERT @YourTable VALUES ('05102010')
INSERT @YourTable VALUES ('03182010')

SELECT 
    CONVERT(datetime,  RIGHT(StringDate,4)
                       +LEFT(StringDate,4)
           ) AS ProperDateTime
    FROM @YourTable

Salida:

ProperDateTime
-----------------------
2010-05-10 00:00:00.000
2010-03-18 00:00:00.000

(2 row(s) affected)

rápida y sucia:

SELECT
    CONVERT(DATETIME,
        SUBSTRING(col, 1, 2)
        + '/' + SUBSTRING(col, 3, 2)
        + '/' + SUBSTRING(col, 5, 4))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top