Me he encontrado con un problema relacionado con la conversión de fechas de XML (ISO8601: aaaa-mm-ddThh: mi: ss.mmm) a SQL Server 2005 datetime. El problema es cuando la conversión de los milisegundos es incorrecta. He probado tanto la conversión implícita y explícita el uso de convertir (fecha y hora, MiFecha, 126) de nvarchar, y el resultado es el mismo:Milisegundos incorrectos al convertir de XML a SQL Server datetime
Original Result
2009-10-29T15:43:12.990 2009-10-29 15:43:12.990
2009-10-29T15:43:12.991 2009-10-29 15:43:12.990
2009-10-29T15:43:12.992 2009-10-29 15:43:12.993
2009-10-29T15:43:12.993 2009-10-29 15:43:12.993
2009-10-29T15:43:12.994 2009-10-29 15:43:12.993
2009-10-29T15:43:12.995 2009-10-29 15:43:12.997
2009-10-29T15:43:12.996 2009-10-29 15:43:12.997
2009-10-29T15:43:12.997 2009-10-29 15:43:12.997
2009-10-29T15:43:12.998 2009-10-29 15:43:12.997
2009-10-29T15:43:12.999 2009-10-29 15:43:13.000
Mi no extensivas pruebas muestran que el último dígito es 0, 3 o 7. ¿Es este un problema simple de redondeo? La precisión de milisegundos es importante, y perder/ganar uno o dos no es una opción.
¿Cuál es la solución entonces? –
Yo diría que no use el tipo de datos DateTime de SQL Server. Almacene el valor en un VARCHAR en su lugar. –
Gracias, esto fue esclarecedor, aunque algo deprimente. – chriscena