Dividir los datos de una columna en SQL Server 2k

Tengo una tabla con una columna DatosFecha Char (24). El problema es que en esta tabla esta almacenada la fecha en formato 2009-03-04 12:34:45.923
Osea en fecha + hora.
Lo que quiero es crear 4 columnas para poder separar la fecha.
DatoFechaDia char(2), DatoFechaMes char(2), DatosFechaAnyio char(4), DatoFechaHora char(12).
Por lo tanto tendría que recorrer todos los registros de la Columna DatosFecha y sacar estos datos y ponerlos en la otras columnas.
No tengo mucha idea de SQL así que si hace falta crear un cursor, indicar como se crea.
1

1 respuesta

Respuesta
1
No debería ser necesario usar cursores.
Lo primero será crear los 4 campos en la tabla y después ejecutar una consulta de actualización.
Dependiendo del gestor que uses (Access, Oracle, SQL Server, etc...) puede variar un poco la sintaxis pero más o menos sería algo así:
update <tabla> set
DatoFechaDia = mid$(datosFecha,9,2),
DatoFechaMes = mid$(datosFecha,6,2),
DatoFechaAno = left$(datosFecha,4),
DatoFechaHora = right$(datosFecha,12);
Si tu gestor de base de datos no entiende la función 'mid$' puedes cambiar las líneas que la usan por estas:
DatoFechaDia = right$(left$(datosFecha,10),2),
DatoFechaMes = right$(left$(datosFecha,7),2).
Gracias por la Respuesta. Finalmente use el Substring para coger lo datos.
Update SIS_Test_CounterData
Set
-- Aquí cojo las partes del campo DatosFecha que contienen el dia, mes y año
DatosFechaDia=substring (DatosFecha,9,2),
DataFechaMes=substring (DatosFecha,6,2),
DataFechaAnyio=substring (DatosFecha,1,4)
GO
/* Aquí convierto los datos de estas nuevas columnas a una columna pero en formato datetime. */
Update SIS_TEST_Fechas
Set CounterFechaFull=Convert (datetime,CounterDia+'/'+CounterMes+'/'+CounterAnyio)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas