今天在测试更新 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/

公众号:健程之道

点击此处留言

sqlserver 更新 datetime 数据_SqlServer 关于 datetime 的更新引发的思考相关推荐

  1. Pandas时间序列数据处理和datetime模块详细教程

    时间序列分析中,常常需要处理时间相关数据,故参考<Python for Data Analysis>总结了Python和Pandas常用的时间序列数据处理的相关操作,并在 Python3. ...

  2. navicat导出sql数据,保留datetime三位小数

    navicat导出sql数据,保留datetime三位小数 问题背景 navicat导出表里的sql数据 datetime保留三位小数 总结 Lyric: 也许已经很难回头 问题背景 有些常用的nav ...

  3. Pandas之datetime数据基础详解。

    Pandas之datetime数据基础详解! 一.日期和时间数据类型 1.利用datetime模块构建时间和日期数据 2.日期和时间的结合体(datetime类型数据) 3.datetime与字符串 ...

  4. 图解Python时间和日期time和datetime数据类型转换

    文章目录 前言 4大数据类型 图解 time.struct_time time.struct_time ⇌ str time.struct_time ⇌ float datetime.datetime ...

  5. sqlserver 微信 读取_Sql Server使用链接服务器远程取数据_sqlserver

    由于最近开发的一个查询系统,基本是在其它服务器的,所以在本地服务器设计了中间,用来存从远程服务器取数据! 一种方法是通过,OPENDATASOURCE来远程读取数据! SELECT   * FROM  ...

  6. oracle批量更新数据从另一表_【案例】Oracle t-sql 更新大批量数据 更新两张大数据表案例...

    天萃荷净 t-sql 更新大批量数据,有两张很大的表,写了一个存储过程处理(加工数据然后插入到一张新表中),因为一次性处理数据量很大,会导致tempdb等资源被耗尽,为了解决这个问题,每次输入两个参数 ...

  7. mysql中更新的命令是_MySQL 语言中,更新表数据的命令是( )。_学小易找答案

    [简答题]MySQL 语言中包含数都定义语言.数据操纵语言和数据控制语言,分别有哪些功能? [单选题]查询员工工资信息时,结果按工资降序排列,正确的是( ). [简答题]arrayList测验 [填空 ...

  8. 按日更新股票数据——从零到实盘13

    前文介绍了多进程创建股票数据的过程,整个创建过程大概约10几分钟.在实盘时,每个交易日都有新数据生成,我们没有必要对全面历史时间都进行重新创建计算,只需要下载新产生的日线数据,每次更新需要3分钟左右. ...

  9. SQLServer数据库误删数据找回

    记一次SQLServer数据库误删数据找回 昨天 同事在本机清理数据库表时,连接到了生产机,误删了二十几张表,幸好是晚上加班的时候删除的,生产机上当时是一天一备份,还原备份是最后的策略,最关键的还是要 ...

最新文章

  1. 程序员难逃二八法则,如何晋升为头部20%玩家?
  2. [密码学] 消息认证码构造方法
  3. HTTP 中POST GET 区别
  4. maven 工程依赖war包
  5. confer安装与连接度的计算
  6. cmake取消宏定义_魔兽怀旧服,牧师实用宏
  7. python整数运算定律_PHP 操作redis 详细讲解
  8. Java面试:反射机制
  9. html鼠标滑动响应,CSS鼠标响应事件经过、移动、点击示例介绍
  10. asp大学生英语四六级网上在线考试系统
  11. SpringMVC工作原理 侵立删
  12. 计算机三号字在哪个页面,Word用楷体三号一页大约多少字?
  13. ncverilog脚本_Ncverilog 常用命令使用详解 | 学步园
  14. oracle数据库恢复aul_AUL6数据恢复总结_20140404
  15. 苹果生产日期对照表2020_苹果官方确认:部分批次AirPodsPro会有声音故障问题
  16. geteditor p 取消自动_进自助洗车机之前请先确认自动驻车和电子手刹的状态哦
  17. 智能电视root,获取最高权限,su: must be suid to work properly解决
  18. PHP项目上传到华为云服务器,php项目上传到云服务器
  19. 2018.07.17【省赛模拟】模拟B组 比赛总结
  20. Java毕业设计-企业招聘管理系统

热门文章

  1. 设计师必备|年年都能借鉴的新年Banner设计
  2. 设计师交流分享社区|灵感并非凭空得来,积累在集设网
  3. UI实用素材案例|视觉层次感爆棚的APP设计
  4. android:layout_marginbottom=,Android: Retrieve layout_marginBottom programmatically?
  5. 乐高百变工程旋转飞椅知识点_每日一个知识点:关于磁盘的一些事儿
  6. python一次性输入多个数_python如何利用input函数输入多个参数?
  7. 关于音乐中气息的练习
  8. C++ 手动实现简单的智能指针类
  9. windows 启动exe程序前注入dll(c++)
  10. Linux启动管理:主引导目录(MBR)结构及作用详解