c# - 毫秒值未保存在 SQL Server DateTime 列中

标签 c# sql-server dapper

我需要存储从使用 DateTime.UtcNow 的 C# 应用程序发送到数据库的 DateTime 值。如果我将它保存到 DateTime 列,毫秒值始终为 000。但是在从应用程序调试时,毫秒值从应用程序发送到数据库。 我错过了什么?

最佳答案

可能发生因为datetime列舍入毫秒部分。来自文档;

Accuracy

Rounded to increments of .000, .003, or .007 seconds

由于您没有向我们展示您存储UtcNow 值的频率(我假设您将其存储为DateTime,而不是字符串表示,因为无参数 ToString 和其他标准格式不会生成毫秒部分通常),这可能会发生但是如果你在短时间间隔内这样做,它总是很奇怪四舍五入到 000 作为毫秒部分。但当然,我们还不能知道这一点。

另一方面,datetime2类型不做任何舍入。它的精度是 100 纳秒。

Accuracy

100 nanoseconds

关于c# - 毫秒值未保存在 SQL Server DateTime 列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35766634/

相关文章:

c# - 将 dapper 与 JOIN 一起使用

c# - Elmah 不记录异常

SQL过滤条件在连接条件或where子句中哪个更有效

c# - sqlFileStream 系统.ComponentModel.Win32Exception : The request is not supported

.net - 客户端服务器安装包.NET

c# - 如何在SQL参数中添加多个 "WHERE conditionA OR conditionB OR conditionC"?

c# - Dapper 的 IEnumerable<T> 是延迟执行还是立即执行?

c# - 是否可以为 yield-return 方法设置 'finally' 代码块?

c# - Entity Framework 5 将现有实体添加到嵌套集合

c# - VS Code "Cannot find or open the PDB file"即使 pdb 存在并且它加载其他 csproj pdb 文件