Ho un metodo che ottiene una proprietà data da una sorgente (o un DataRow
o un SqlDataReader
):Conversione da DateTime SqlDateTime è imprecisa
protected SqlDateTime GetSqlDateTimePropertyValue(string propertyName, object source)
{
var objValue = GetPropertyValue(propertyName, source);
var value = objValue == DBNull.Value ? null : (DateTime?)objValue;
var sqlValue = new SqlDateTime();
if (value.HasValue) sqlValue = value.Value;
return sqlValue;
}
ma la conversione sembra cambiare la data leggermente in modo che il mio test fallisce sempre.
Qualcuno sa perché questo metodo si converta in modo errato?
Alla fine del metodo, sembra che la conversione a SqlDateTime
fa qualche arrotondamento:
value.Value.Ticks: 634698391707468296
sqlValue.Value.Ticks: 634698391707470000
Vedi: http://stackoverflow.com/questions/7824766/how-does-sqldatetime-do-its-precision-reduction –