У меня есть метод, который получает свойство даты из источника (либо DataRow
или SqlDataReader
):Преобразование из DateTime в SqlDateTime неточна
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;
}
, но преобразование, кажется, немного изменив дату, так что мой тест всегда терпит неудачу.
Кто-нибудь знает, почему этот метод будет неправильно преобразован?
В конце метода, он выглядит как преобразование в SqlDateTime
делает некоторые округление:
value.Value.Ticks: 634698391707468296
sqlValue.Value.Ticks: 634698391707470000
Смотрите: http://stackoverflow.com/questions/7824766/how-does-sqldatetime-do-its-precision-reduction –