2

我有一个带有 DateTimeOffset(2) 类型的 CreatedDate 字段的 SQL Server 表。
表中的示例值为 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。

谢谢!
达尔维斯

4

2 回答 2

1

SQL Server 没有毫秒精度。

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

高级 SQL Server 日期和日期时间处理

编辑

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

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

于 2010-03-18T14:49:40.223 回答
0

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

于 2010-03-18T14:51:46.927 回答