SQL Server - formato numeric a fecha

 
Vista:

formato numeric a fecha

Publicado por roberto (8 intervenciones) el 27/08/2008 16:39:40
ESTIMADOS,

TENGO UNA TABLA DONDE LAS FECHAS DE NACIMIENTO DE MIS TRABAJADORES ESTAN COMO TIPO DE DATO NUMERIC(8,0) . Y SON ALMACENADAS ASI: AAAAMMDD OSEA, '20080827'


EL TEMA ES Q ESTOY HACIENDO UNA CONSULTA EN EXCEL Y NECESITO QUE LA FECHA APAREZCA DE ESTA MANERA DDMMAAAA O SEA 27082008.

COMO TENDRÍA Q SER L A CONSULTA PARA QUE TOME LOS DATOS, HAGA LA CONVERSION DE ESE CAMPO Y ME LA PRESENTE DE ESA MANERA?


SALUDOS CORDIALES Y GRACIAS DE ANTEMANO

ROBERTO, CHILE.-
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:formato numeric a fecha

Publicado por pacopaz (131 intervenciones) el 27/08/2008 17:22:04
Obviamente no es la mejor forma de implementar fechas en sql server, pero no criticaré eso.
La forma de hacer la consulta es:
select replace(convert(char(10), convert(datetime, cast([Fecha] as char(8)), 112), 105), '-', '')
from ...

donde
[Fecha] es el campo Numeric(8,0) que tienes en la tabla

Explicado es:
- [Parte 1]: cast([Fecha] as char(8)).
Esto convierte a texto el número, de 20080827 a '20080827', según tu ejemplo.
- [Parte 2]: convert(datetime, [Parte 1], 112).
Esto convierte el resultado de la [Parte 1] en un valor tipo fecha, según el código 112. Es decir, de '20080827' a 27/08/2008 00:00:00.000.
- [Parte 3]: convert(char(10), [Parte 2], 105.
Esto convierte la fecha en texto de formato DD-MM-YYYY, por el código 105. Es decir, de 27/08/2008 00:00:00.000 a '27-08-2008'.
- Final: replace([Parte 3], '-', '').
Esto elimina los guinoes (-) del texto. Así, pasa de '27-08-2008' a '27082008'.
Para mayor referencia, visita esta página:
http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx

Otra forma es hacer esto:
select right(cast([Fecha] as char(8)),2) + substring(cast([Fecha] as char(8)),5,2) + left(cast([Fecha] as char(8)),4)
from ...

donde
[Fecha] es el campo Numeric(8,0) que tienes en la tabla

Explicado es:
- right(cast([Fecha] as char(8)),2).
Convierte la fecha en texto y toma los dos últimos caracteres (dia).
- substring(cast([Fecha] as char(8)),5,2).
Convierte la fecha en texto y toma desde la posición 5, dos caracteres (mes).
- left(cast([Fecha] as char(8)),4)
Convierte la fecha en texto y toma los 4 primeros caracteres (año).

Espero que te sirva.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

gracias

Publicado por roberto (8 intervenciones) el 29/08/2008 13:54:21
Estimado,

la información ha sido certera.

Te agradezco la colaboración, eres muy amable,

Saludos cordiales,

Roberto, Chile.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar