MS SQL Server hace algunas cosas extrañas con las fechas en el nivel más bajo. Por ejemplo, consideremos el siguiente script:
select
test1 = dateadd(ms,-1,convert(datetime,'20110504')),
test2 = dateadd(ms,-2,convert(datetime,'20110504')),
test3 = dateadd(ms,-3,convert(datetime,'20110504')),
test4 = dateadd(ms,-4,convert(datetime,'20110504')),
test5 = dateadd(ms,-5,convert(datetime,'20110504')),
test6 = dateadd(ms,-6,convert(datetime,'20110504'))
Esto devuelve:
test1 test2 test3 test4 test5 test6
----------------------- ----------------------- ----------------------- ----------------------- ----------------------- -----------------------
2011-05-04 00:00:00.000 2011-05-03 23:59:59.997 2011-05-03 23:59:59.997 2011-05-03 23:59:59.997 2011-05-03 23:59:59.993 2011-05-03 23:59:59.993
Como se puede ver MS SQL sólo se está ocupando de milisegundos a la más cercana 3. Si vas entre éstos consiguen redondeados. Es posible que esto sea lo que sucede cuando DateTime.MaxValue se está almacenando en SQL.
¿Qué base de datos está utilizando y qué tipo de datos está almacenando en la base de datos? – David
Pregunta muy interesante @ dev.e.loper –
¿Has probado datetime2? http://technet.microsoft.com/en-us/library/bb677335.aspx –