SQL Server - Diferencia en Conversión de Fecha a Double en SQL Server.

   
Vista:

Diferencia en Conversión de Fecha a Double en SQL Server.

Publicado por Carlos Ch M (3 intervenciones) el 27/09/2016 21:52:00
Cordial Saludo;
Me gustaría saber si alguien me puede dar una explicación del porque la diferencia en estos resultados.
Deseo almacenar una fecha y hora como un valor numérico, por lo que ejecuto la sentencia de SQL Server
SELECT CAST(CONVERT(DATETIME,SYSDATETIME(),103) AS FLOAT)

Y tengo como resultado para el día 27 de septiembre de 2016 a las 14:36 el número
42638.6085907407
Si este último número lo uso en la sentencia
SELECT CONVERT(datetime,42638.6085907407,103)

Obtengo como resultado la fecha y hora inicial

2016-09-27 14:36:22.237

Sin embargo si tomo ese número y lo copio en Excel y cambio el formato de la celda a Fecha, obtengo como fecha el 25 de septiembre y no el 27;

Desde una aplicación en Visual Basic 6.0 conectada a SQL Server se crean y actualizan registros asignando como fecha la sentencia CDbl(Now) para convertir la fecha en un doublé.

Rgto!Mp_Sol_Fec = CDbl(Now), 4)

Pero al consultar los registros y convertirlos a fecha obtengo fechas dos días posteriores a la fecha real, es decir 29 de septiembre.
El valor numérico generado por VB 6.0 sin embargo al ser copiado en una celda de Excell si refleja la fecha correcta del 27 de Sep.
Entonces el problema de la diferencia en estas fechas está en SQL Server?
Alquilen por favor tiene idea de que pasa ?
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
Imágen de perfil de Isaias

Diferencia en Conversión de Fecha a Double en SQL Server.

Publicado por Isaias (3424 intervenciones) el 27/09/2016 22:00:22
¿Y porque quiere inventar el agua hirviendo?

SQL Server como MUCHOS otros motores de bases de datos, las FECHAS las almacena en NUMERICO
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

Diferencia en Conversión de Fecha a Double en SQL Server.

Publicado por Carlos Ch M (3 intervenciones) el 27/09/2016 22:03:32
Que Pedante y Arrogante, no intento inventar, intento comprender porque la diferencia; gracias por nada…
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
Imágen de perfil de Isaias

Diferencia en Conversión de Fecha a Double en SQL Server.

Publicado por Isaias (3424 intervenciones) el 27/09/2016 22:09:48
Ok, una disculpa

¿Para que quiere insertar la FECHA NUMERICA, si SQL Server (como muchos otros motores de bases de datos) almacenan las fechas en formato NUMERICO?
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

Diferencia en Conversión de Fecha a Double en SQL Server.

Publicado por Carlos Ch M (3 intervenciones) el 27/09/2016 22:19:08
Gracias por la cordialidad.
El tema es que me encontré con este problema en un sistema ya existente; sus desarrolladores iniciales siguiendo la recomendación de un supuesto experto decidieron guardar fechas como doublé para evitar conflictos con formatos de fechas, idiomas del motor y regionalización, eso hace algunos años. El problema que me presentaron como miembro de un equipo de soporte fue que los reportes nunca coincidían, después de analizar los datos me percate que la razón era esa, la conversión hecha en VB da un numero pero la conversión hecha en SQL Server da otro, me inclino a pensar que el número correcto sería el de VB pues en Excell la fecha coincide pero no he podido encontrar una explicación, restar 2 al valor dado por VB hace que los reporte funcionen correctamente pero esto no es una solución muy profesional por eso estoy buscando una razón de porque la diferencia..
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
Imágen de perfil de Isaias

Diferencia en Conversión de Fecha a Double en SQL Server.

Publicado por Isaias (3424 intervenciones) el 27/09/2016 22:24:15
Como le comente anteriormente, SQL Server almacena las fechas en FORMATO NUMERICO, no hay que hacer conversiones.

¿Como puedo evitar problemas de fecha?

Es muy simple, SIEMPRE manejar el formato ANSI (YYYYMMDD HH:MM:SS) para ingresar los datos en SQL Server.

Es claro que si se estan "manipulando" los formatos fecha, NADIE puede asegurar que le de siempre los resultados esperados.

Espero haberme explicado
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