昨天Tester发现数据有问题,大部分时间“datetime类型”都多了一秒,很少一部分数据的时间能完全对上(年月日时分秒),因为缺少关键日志,就各种排查,最后发现在调用Savechange方法前一刻数据都是对的,然后去数据库查询,数据就对不上了:时间多了一秒

骂娘之后,开始分析存储的Datetime对象(抽取了两个代表)

数据1:

{1/3/2017 5:50:04 PM}
Date: {1/3/2017 12:00:00 AM}
dateData: 9859562662895793936
Day: 3
DayOfWeek: Tuesday
DayOfYear: 3
Hour: 17
InternalKind: 9223372036854775808
InternalTicks: 636190626041018128
Kind: Local
Millisecond: 101
Minute: 50
Month: 1
Second: 4
Ticks: 636190626041018128
TimeOfDay: {17:50:04.1018128}
Year: 2017
数据2:

{1/3/2017 5:52:35 PM}
Date: {1/3/2017 12:00:00 AM}
dateData: 9859562664412782254
Day: 3
DayOfWeek: Tuesday
DayOfYear: 3
Hour: 17
InternalKind: 9223372036854775808
InternalTicks: 636190627558006446
Kind: Local
Millisecond: 800
Minute: 52
Month: 1
Second: 35
Ticks: 636190627558006446
TimeOfDay: {17:52:35.8006446}
Year: 2017

看了部分数据之后,第一反应就是四舍五入了(红色部分)

继续验证猜测:将Datetime对象的毫秒置0

再次大量数据测试,完全正确,问题算是解决了。

至于在哪个环节对数据进行了四舍五入,Google一下,未发现目标就没在继续纠结了。

同样,Firebird数据库未发现此问题(不知是否有相关设置之类,俺不纠结他了)

.NET entityframework for mysql ,datetime字段存储值时有误差的更多相关文章

  1. Mysql 修改字段默认值

    环境:MySQL 5.7.13 问题描述:建表的时候,users_info表的role_id字段没有默认值,后期发现注册的时候,需要提供给用户一个默认角色,也就是给role_id字段一个默认值. 当前 ...

  2. 关于Mysql datetime类型存储范围测试

    创建一个datetime表 > create table date_time(time datetime); > desc date_time; +-------+----------+- ...

  3. mySql一个字段的值模糊匹配多表多列的查询

    1.dao层/** * 分页查询点卡集合信息 * @param tid 游戏类型编号 * @param gid 游戏编号 * @param searchInfo 包括(点卡名称,游戏名称,点卡面值,游 ...

  4. Mysql多字段模糊查询

    MySQL同一字段多值模糊查询 一. 同一字段多值模糊查询,使用多个or进行链接,效率不高,但没有更好的解决方案.(有看到CHARINDEX 关键字,可查询结果并不是模糊,举个栗子 例如SELECT ...

  5. mysql的日期存储字段比较int,datetime,timestamp区别

    1.首先是我们分析datetime长度是8个字节,INT的长度是4个字节,存储空间上比datatime少. 2.int存储索引的空间也比datetime少,排序效率高,查询速度比较快. 3.方便计算, ...

  6. [EntityFramework] 对 DateTime 类型使用 SQL 服务器时间或者字段默认值

    DateTime 类型在 SQL 服务器上如果设置了默认值,在 EntityFramework 添加新行的时候想使用该默认值,则不能对新增加的实体的 DateTime 字段赋值. 但是如果新增加的实体 ...

  7. mysql变成类型字段varchar值更新变长或变短底层文件存储原理

    为了搞清楚MySQL对于可变长度字段值修改时,如何高效操作数据文件的机制.之前一直模糊不清,网上也搜不到现成的答案.经过多方资料搜集整理.写出此文供大家一起参阅.由于涉及众多非常底层的知识,我假设读者 ...

  8. 【转】MySQL datetime数据类型设置当前时间为默认值

    转自http://blog.csdn.net/u014694759/article/details/30295285 方法一: MySQL目前不支持列的Default 为函数的形式,如达到你某列的默认 ...

  9. mysql配置与存储引擎与字段类型与约束条件

    目录 字符编码与配置文件 存储引擎 创建表的完整语法 字段类型 整型 浮点型 字符类型 数字的含义 枚举与集合 日期类型 约束条件 字符编码与配置文件 在MySQL5.X系列中,显示的字符编码有多种, ...

随机推荐

  1. Android 打包

    1.数字签名(指的是我们打包程序时所用keystore的SHA1指纹) 2.debug打包,不能在android 市场上架,使用的签名是默认的签名,1年后失效:release打包使用的是自己的签名,可 ...

  2. EBS中OPM成本更新处理流程及对应的表结构、SLA表

    OPM成本更新流程:  1.跑实际成本处理  功能作用:计算成本  2.成本更新        功能作用:更新成本  3.OPM会计预处理程序->活动->提交流程 功能作用:是创建会计事件 ...

  3. css之z-index

    要想z-index可以使用,就要配合定位元素使用即position 如果定位元素z-index没有发生嵌套: 1.后来居上的准则 2.哪个大,哪个上 例如 如果定位元素z-index发生嵌套: 1.祖 ...

  4. DUBBO参数验证

    public class ValidationParameter implements Serializable {           private static final long seria ...

  5. sys模块和os模块,利用sys模块生成进度条

    sys模块import sysprint(sys.argv)#sys.exit(0)             #退出程序,正常退出exit(0)print(sys.version)       #获取 ...

  6. 关于Microsoft CRM 2013自动保存Autosave功能的10点说明

    今天不经意翻看到以前记的笔记发现这个笔记觉得还是应该把它整理记录一下: 关于Microsoft CRM 2013自动保存Autosave功能的10点说明: 1.新建时不会自动保存,需要手动点击保存按钮 ...

  7. 发邮件 和 excel导出中文文件名

    /** * 发邮件 * @param email * @param subject * @param body * @throws UnsupportedEncodingException */ pu ...

  8. 三张图片详解Asp.Net 全生命周期

    用三张图片详解Asp.Net 全生命周期 下面我们使用三张图片解析ASP.net的整个生命周期,我总感觉使用图片更加的清楚的说明这种问题,所以使用的这样方式 说明: 1  第一张图片从全局说明从客户端 ...

  9. jquery 获取form下的所有元素

    <!DOCTYPE html> <html> <head> <meta charset="gb2312"> <title> ...

  10. CoreSeek

    [CoreSeek] CoreSeek有两个核心模块Indexer和Search. Indexer:负责从MySQL拉取数据源,把数据源分词,建立索引. Search:搜索模块. CoreSeek工作 ...