使用C#时丢失DateTimeOffset精度

时间:2010-03-18 14:42:27

标签: sql-server-2008 datetimeoffset

我有一个SQL Server表,其CreatedDate字段的类型为DateTimeOffset(2) 表中的样本值为2010-03-01 15:18:58.57 -05:00

作为一个例子,在C#中我检索这个值如下:

var cmd = new SqlCommand("SELECT CreatedDate FROM Entities WHERE EntityID = 2", cn);  
var da = new SqlDataAdapter(cmd);  
DataTable dt =new DataTable();  
da.Fill(dt);

我看看价值:
MessageBox.Show(dt.Rows [0] [0]的ToString());

结果是2010-03-01 15:18:58 -05:00,它缺少存储在数据库中的.57。

如果我在Watch窗口中查看dt.Rows [0] [0],我也看不到.57,因此它看起来已被截断。

有人可以对此有所了解吗?我需要使用日期来匹配数据库中的其他记录,并且需要.57。

谢谢!
Darvis

2 个答案:

答案 0 :(得分:1)

SQL Server没有毫秒精度。

这是一篇详细介绍的文章:

Advanced SQL Server DATE and DATETIME Handling

修改

我猜C#不应该显示相同的行为。请记住,DateTime.ToString()方法不包括毫秒,除非您指定格式提供程序。

Watch窗口也会显示ToString()。尝试设置断点并使用Inspector获取存储的更详细信息,并查看是否存在毫秒数。

答案 1 :(得分:0)

填充应该更改数据集中的数据以匹配数据源中的数据 - 您是否尝试过任何其他方法来检索数据以查看其他类是否以您希望的格式检索数据?简单的测试,如sqldatasource / gridview等