使用 C# 比较 SQL Server 中的两个日期时间值

2023-12-14

我想知道如何比较两个日期时间值,一个是从 sql 数据库检索的,另一个是用 c# 获取的当前日期时间值


Beware when comparing DateTimes generated within C#. The DateTime struct in C# has more precision than the datetime1 type in SQL Server. So if you generate a DateTime in C# (say from DateTime.Now), store it in the database, and retrieve it back, it will most likely be different.

例如,以下代码:

using(SqlConnection conn = new SqlConnection("Data Source=.;Integrated Security=SSPI"))
using(SqlCommand cmd = new SqlCommand("SELECT @d", conn)){
    DateTime now = DateTime.Now;
    cmd.Parameters.Add(new SqlParameter("@d", now));
    conn.Open();
    DateTime then = (DateTime)cmd.ExecuteScalar();
    Console.WriteLine(now.ToString("yyyy/MM/dd HH:mm:ss.fffffff"));
    Console.WriteLine(then.ToString("yyyy/MM/dd HH:mm:ss.fffffff"));
    Console.WriteLine(then - now);

}

返回以下示例结果。



2009.06.20 12:28:23.6115968
2009.06.20 12:28:23.6100000
-00:00:00.0015968
  

因此在这种情况下,您需要检查差异是否在某个 epsilon 范围内:

Math.Abs((now - then).TotalMilliseconds) < 3

请注意,如果您要比较从数据库检索的两个日期时间,或者比较从具有第二或更大粒度的组件构造的日期时间,这不是问题。

也可以看看:这篇博文

1See note about accuracy, where it mentions "Rounded to increments of .000, .003, or .007 seconds"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 比较 SQL Server 中的两个日期时间值 的相关文章

随机推荐

  • 正在使用以下函数来解密代码?有什么可以帮忙解决的吗?

    function ibp crypto decrypt p session id in RAW return raw is l decrypted raw RAW 2048 l encrypted raw RAW 2048 p sessio
  • 我可以使用 MySQL Connector/J 执行以分号分隔的多个查询吗? [复制]

    这个问题在这里已经有答案了 我的 mysql db jdbc 驱动程序版本为 5 1 25 我想像这样执行sql查询 statement execute select fullName from user where user id 1 s
  • 如何更改 WooCommerce 中 S 的评论评级?

    如何将 WooCommerce 中的评论评级图像从当前的 S 更改为实际的星级图像 经过一番谷歌搜索后 我尝试了以下方法 将主题评级替换为 WooCommerce 星级但这不起作用 它只是将 S 更改为小方框 当前CSS woocommer
  • 使用 R 按组计算累积标准差

    我对 R 还很陌生 想要计算 R 中各组的累积标准差 我有一个数据框 D 其中包含访客 ID 以及每个页面所花费的相应页面 顶部 时间 如下所示 ID top v1 2 3 v1 4 8 v1 10 2 v2 16 2 v2 12 2 v2
  • 使用 Windows 身份验证登录 SQL Azure

    是否可以将 SQL Azure 服务器或数据库加入域 以便我们可以使用 Windows 身份验证从 Active Directory 登录 Microsoft 最近宣布支持 Azure SQL DB 的 AAD 身份验证 查看文档页面和下面
  • 两个类可以互相成为对方的数据成员吗?

    是否有可能 A 类成为另一个 B 类的字段 同时 B 类成为 A 类的字段 我有一个场景 其中有两个类 比赛和场地 我不确定是否将 Venue 作为 Match 的数据成员 或者反过来 或者将它们作为另一个的数据成员 如果 Java 允许的
  • NxN 棋盘的 TicTacToe 获胜逻辑

    当前逻辑在 3x3 板上工作良好 因为它是静态的 如何将其转换为NxN逻辑 获胜逻辑通过添加行和列方块来工作 To determine a win condition each square is tagged from left to r
  • 使用 Google Drive api 文件列表时,在父级中使用“root”时,根目录下不会显示文件夹

    当我在Q中的parents中设置 root 时 我只想查看根目录下的文件夹和文件 但我只能看到一个标题为 入门 的pdf文件 我用的是C 代码 我的文件夹在哪里 但是当我在代码中按名称 例如 name Folder1 搜索时 我可以看到文件
  • 在 D3 中更改每个堆积条形图的颜色为不同颜色

    这涉及到为堆叠条形图的每个条形分配不同的颜色 因为目前所有四个条形图中只有单一颜色 并且堆叠条形图中的颜色正在变化 但我也尝试为所有四个条形分配不同的颜色堆叠值 这是代码 var margin top 20 right 160 bottom
  • 通过服务帐户和 OAuth2 向 Google Drive 进行身份验证时出现 401 响应

    我试图让 Java 应用程序访问存储在我的 GoogleDrive 文件夹中的文件列表时似乎遇到了困难 这 我在开发者控制台中有一个项目设置 我已经为该项目启用了 Drive API 我已经为服务帐户创建了身份验证凭据 并且正在使用生成的
  • 如何在按钮单击事件上从 DataGridView 填充文本框

    我想从 DataGridView 控件填充按钮单击事件的数据 我的代码是这样的 for int i 0 i lt dgv EmpAttList Columns Count i txt EnrollNo Text this dgv EmpAt
  • 在 R 中转换 data.frame

    我有以下数据框 foo lt data frame abs cbind rnorm 3 rnorm 3 mean 8 rnorm 3 mean 9 rnorm 3 mean 1 colnames foo lt c w x y z rowna
  • 返回双精度数组的导出函数

    在 Golang 中如何导出返回双精度数组的函数 以前可能的方式现在似乎返回 运行时错误 cgo 结果有 Go 指针 export Init func Init filename string C int unsafe Pointer va
  • indexOf 区分大小写吗?

    indexOf String 方法区分大小写吗 如果是这样 是否有不区分大小写的版本 The indexOf 方法均区分大小写 您可以通过预先将字符串转换为大写 小写来使它们 粗略地 以一种破坏的方式 但适用于很多情况 不区分大小写 s1
  • 递归代替多个嵌套的 for 循环?

    我在尝试更新嵌套 for 循环以使用递归时遇到一些问题 使用递归时是否可以从早期的 for 循环访问 a b 和 c 变量 下面是我尝试将其转换为递归调用的简单示例 for int a 0 a lt 10 a for int b 0 b l
  • 防止Fragment的restoreViewState()

    我有一个对象Foo可以使用片段进行配置 FooFragment Foo 类包含对 FooFragment 的静态引用和方法公共片段 getConfigurationFragment 此方法将当前对象分配给 FooFragment 并返回它
  • 处理导航栏按钮事件时应用程序崩溃

    在我的应用程序中 我有一个导航栏按钮 允许用户弹回到导航堆栈的顶部 这已经存在了一段时间并且一直运行良好 但是 当我使用 MT 4 0 构建时 它崩溃了 in constructor UIButton btn UIButton FromTy
  • 在 WPF 应用程序中显示 PDF [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 关于如何在 WPF Windows 应用程序中显示 PDF 文件有什么想法吗 我正在使用以下代码来运行浏览器 但是Browser Navigate方法没有做任何事情 WebBrows
  • 我需要在 HTML 中转义什么(JSON 响应)

    我的 JSON 响应如下所示 rc 200 test user div class sub1 div class avatar a href blah blah a br strong 0 strong div div class sl p
  • 使用 C# 比较 SQL Server 中的两个日期时间值

    我想知道如何比较两个日期时间值 一个是从 sql 数据库检索的 另一个是用 c 获取的当前日期时间值 Beware when comparing DateTimes generated within C The DateTime struc