SqlServer 关于 datetime 的更新引发的思考

2023-11-15

今天在测试更新 SqlServer 表的 datetime 字段时,突然发现并没有更新成功,同时也没有报错,感觉十分诧异,因此仔细排查了一下,终于发现是和字段本身的精度有关。

现象

假设我们现在有一张 SqlServer 表 basic_info,其表结构为:

字段名 类型
name varchar
open_time datetime

现在其中有一条数据:

name open_time
Jack 2014-05-25 11:11:01.260

现在我想把这条数据的 open_time 字段修改为 2014-05-25 11:11:01.262,执行语句:

update basic_info set open_time = '2014-05-25 11:11:01.262' where name = 'Jack';

结果是并没有更新为我想要的值:

name open_time
Jack 2014-05-25 11:11:01.263

这个 263 是怎么出现的呢?

原因

这个问题我排查了很久,最终在关于 datetime 字段定义 的网站上,在关于字段描述的表中,有这么一行:

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

意思就是说, datetime 这个字段的 精度 ,四舍五入后会变为 .000, .003, or .007 秒。

这样的话,也就能说这个字段的时间毫秒数的个位数,只会是 0、3、7,那么也就能解释上面的现象,为什么我想更新成 2,最终变成了 3

解决方法

当你对于精度要求不高的话,比如只需要精确到秒级别,那么这个字段的使用完全是没有问题的。

但如果你一定需要精确到毫秒呢?那么可以使用 datetime2 类型,它的精度可以精确到 100 纳秒

总结

对于服务端开发人员,数据库几乎是一个无法避免的中间件,虽然我们并非专业的 DBA,但多了解一些总是好事。

有兴趣的话可以访问我的博客或者关注我的公众号、头条号,说不定会有意外的惊喜。

https://death00.github.io/

公众号:健程之道

点击此处留言

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

SqlServer 关于 datetime 的更新引发的思考 的相关文章

  • 如何从前端将ASP.net dropdownlist索引设置为0

    我在 ASP net 页面中有以下代码
  • 提升变焦不起作用

    我正在使用带有苹果风格幻灯片画廊的提升缩放功能 一切正常 然而 缩放功能会放大被滑块隐藏的隐藏图像 直到单击缩略图时它们变得可见 启动缩放插件的原始代码是 zoom 01 elevateZoom 我从其他问题中得到了下面的 JavaScri
  • 如何实现弧形顶部指针

    有人可以帮忙解决这个问题吗 如何仅用CSS实现附加按钮 无图像 到目前为止 这是我的代码 triangle up width 0 height 0 border left 25px solid transparent border righ
  • Chrome“请匹配请求的格式”验证消息

    我正在研究 HTML 5 验证和本地化 并设法让一些代码正常工作 使我能够本地化 HTML 5 验证错误消息 见下文 我的问题是 在 Chrome 中 当与模式匹配时 您仍然会弹出英语 或者我猜您 Chrome 设置的任何语言 的弹出窗口
  • 从VBA中的数组批量插入到sql中

    我正在尝试在 Excel 中构建一个按钮 将所选区域上传到 SQL Server 中的表中 第一行将自动视为列标题 这件事该怎么继续下去呢 我想要的是简单和超快的上传 这是我的想法 我将选择选定的区域 然后将其保存为 txt 文件 然后对其
  • Wkhtmltopdf 每页右侧的垂直文本

    下面是使用 wkhtmltopdf 生成的 PDF 示例 我需要在每一页的右书脊上生成文本 我尝试将其添加到标题代码中 似乎会剪辑 PDF 的正文 我正在使用 wkhtmltopdf 的页眉和页脚参数 不太确定如何或是否可以在每个页面的右侧
  • 喜欢和不喜欢用户对产品的评论

    用户架构 var UserSchema new Schema review likes type String review dislikes type String 审查架构 var ReviewSchema new Schema pro
  • SQL Server 之间

    我有一个表 其中有年 月和一些数字列 Year Month Total 2011 10 100 2011 11 150 2011 12 100 2012 01 50 2012 02 200 现在 我想要SELECT2011 年 11 月至
  • 如何通过Object Id和Column Id查询表数据?

    有桌子Clients PK LastName Name Address 1 Vidal Arturo St 2 Lavezzi Ezequiel St 3 Cuadrado Guillermo St 我想得到 通过以下查询 我可以得到前四列
  • 如何在单页应用程序中使用 #-URL?

    本文 http danwebb net 2011 5 28 it is about the hashbangs提出了一个非常令人信服的论点 因为 URL 是长期存在的 它们被添加书签并传递 所以它们应该是有意义的 并且使用哈希进行真正的路由
  • 如何在同一个

    中设置两种不同的字体大小

    我有一段 HTML 代码 我一直坚持不下去 我怎样才能将这个文本的第一部分的字体大小设置为 20px 以及后面的文本 br 标签字体大小为 15px 或者 如果我做的完全错误 我该如何做而不将它们放在不同的标签中 p Los Santos
  • Opera 中 margin-bottom 的计算方式不同

    我有一个具有相对位置的 div 和一个具有绝对位置的子 div div class out div div div CSS container width 100px height 100px position relative insid
  • 如何去除html源代码中的空格

    我正在使用 django 和 python 在模板文件中 我有一个下拉列表 如下所示 有用 唯一的问题是源 html 代码之间有很多空白 有什么办法可以去除空白吗 谢谢 for lang ele in video languages all
  • 如何在引导程序中制作两个等高的列?

    我有这个代码 HTML div class container fluid div class row div class col md 6 p Line p p Line p p Line p p Line p p Line p p Li
  • 为什么 Firefox 关闭空 html 标签?

    我注意到在 Firefox 中 当我查看源代码时 它会向空标签项添加结束标签 例如 hr and img src image jpg 在 Firefox 中查看源代码我明白了 hr and img src image jpg 该文档是 HT
  • Python 模块 BeautifulSoup 提取锚点 href

    我正在使用 BeautifulSoup 模块通过以下方式从 html 选择所有 href def extract links html soup BeautifulSoup html anchors soup findAll a print
  • 构建两列 html 表单的最佳方法?

    对齐以下内容的最佳方法是什么 我想要 inputTitle左边和右边inputInput在右边 两者之间有错误 CSS crud form width 430px margin 10px solid font family Verdana
  • 如何更改数据表中标题单元格的内容?

    我正在使用数据表 http datatables net plugin 在我的可排序列上 我想用按钮替换列文本 但是这样做 oSettings aoColumns i nTh text 我可以检索相应列的文本 但是 oSettings ao
  • 使用 FormData 上传 JavaScript Blob

    我在将 javascript 创建的 blob 上传到我的服务器时遇到问题 基本思想是用户上传图像 在 javascript 中我对图像进行居中裁剪并在传输之前对其进行下采样 图像处理工作正常 但上传本身无法正常工作 这是执行从 canva
  • 如何在 Safari 和 Native App 之间共享上下文?

    我有需要通过 Safari 设置一些上下文 上下文标记 然后从本机 iOS 应用程序读取该上下文 这样做的最佳实践是什么 到目前为止的一些想法 在 HTML 5 数据库中设置上下文 但我不确定这是否有效 因为该数据库可能只能从 Safari

随机推荐