首页 > 数据库 >[转]MySQL中 datetime类型精度提示:需要精确到微秒请不要直接使用datetime类型。

[转]MySQL中 datetime类型精度提示:需要精确到微秒请不要直接使用datetime类型。

时间:2023-09-22 15:27:21浏览次数:31  
标签:10 01 21 mysql datetime sec 2021 MySQL 类型

MySQL中的默认的datatime类型所控制的精度是不包含到毫秒的,它即包含date,也包含time,即:'YYYY-MM-DD hh:mm:ss' , 取值范围 为'1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

那么问题来了:

1. 如果插入的数据带有毫秒,那么会成功吗?如果成功,毫秒部分如何处理?是直接丢弃还是舍入?

2. 如果想让数据更加精确,包含1-6位毫秒,怎么办?

对于问题1的答案是:会成功,毫秒部分不会直接丢弃,会舍入(rounding),测试如下:

mysql> create table mqst1(id int, createtime datetime);
Query OK, 0 rows affected (0.07 sec)

mysql> insert into mqst1 values(1,'2021-10-01 21:08:08.123');
Query OK, 1 row affected (0.01 sec)

mysql> insert into mqst1 values(2,'2021-10-01 21:20:08.678');
Query OK, 1 row affected (0.01 sec)

mysql> select * from mqst1;
+------+---------------------+
| id | createtime |
+------+---------------------+
| 1 | 2021-10-01 21:08:08 |
| 2 | 2021-10-01 21:20:09 |
+------+---------------------+
2 rows in set (0.00 sec)
可以看到,插入是成功的,毫秒部分被4舍5入了。

对于问题2的答案是可以使用datetime(n),其中n最大可以是6, 如果是0的话相当于datatime. 测试如下:

mysql> create table mqst2(id int, createtime datetime(6));
Query OK, 0 rows affected (0.03 sec)

mysql> insert into mqst2 values(1,'2021-10-01 21:08:08.123');
Query OK, 1 row affected (0.04 sec)

mysql> insert into mqst2 values(1,'2021-10-01 21:08:08.123123');
Query OK, 1 row affected (0.01 sec)

mysql> select * from mqst2;
+------+----------------------------+
| id | createtime |
+------+----------------------------+
| 1 | 2021-10-01 21:08:08.123000 |
| 1 | 2021-10-01 21:08:08.123123 |
+------+----------------------------+
2 rows in set (0.00 sec)
参考资料:

MySQL :: MySQL 5.7 Reference Manual :: 11.2.7 Fractional Seconds in Time Values
————————————————
版权声明:本文为CSDN博主「匿_名_用_户」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qingsong3333/article/details/120580791

标签:10,01,21,mysql,datetime,sec,2021,MySQL,类型
From: https://www.cnblogs.com/dirgo/p/17722429.html

相关文章

  • php js+laravel+mysql手术麻醉临床信息系统
    医院手麻系统源码 技术架构:phpjs+laravel+mysql vue2elementB/S网页版手术麻醉临床信息系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流程,实现麻醉手术过程的信息数字......
  • MySQL高级SQL语句之多表连接
    目录MySQL高级SQL语句1.实际操作1.1新建表1.2查看表及内容1.3通配符1.4函数1.4.1数学函数:1.4.2聚合函数:1.4.3字符串函数:1.5语句1.5.1GROUPBYsql语句的执行顺序1.5.2HAVING1.5.3别名1.6查询1.6.1子查询1.6.2EXISTS1.7表连接1.7.1innerjoin内连接1.7.2leftjoi......
  • MySQL中的Statistics等待
    【作者】吴宙旭,携程数据库专家【问题描述】线上我们偶尔会碰到MySQL的状态是statistics.但如果出现大量的statistics等待,会引起MySQL性能急剧下降。官方的文档对这个状态的解释如下:Theserveriscalculatingstatisticstodevelopaqueryexecutionplan.Ifathreadis......
  • nods中mysql时间相差8小时
    前言最近在做自己的一个记账项目,后端nestjs中使用typeorm的mysql。当添加记录时,发现所以时间都相差了8小时。后面查了一下资料发现因为默认timezone是用UTC的。所以只需要设置成我们自己的时区即可。解决方法ormconfig.json{"type":"mysql","host":"localhost","po......
  • MySQL 主从复制与读写分离
    MySQL主从复制与读写分离1、什么是读写分离?读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。2、为什么要读写分离呢?因为数据库的“写”(写10000......
  • docker 部署mysql8.3.0
    以下内容全部来源于https://blog.csdn.net/Weirdo_zhu/article/details/126358872?spm=1001.2014.3001.5501一、拉取镜像dockerpullmysql:8.0.30二、创建挂载路径 //根目录选择自身实际最大磁盘路径一般为/home或者定义/datamkdir-p/data/mysql/datamkdir-p/data/m......
  • 将hive数据库中的数据导入到mysql数据库中时需要注意到的问题
    在hive中使用jdbc将hive与mysql连接起来时一定要注意到每个数据库不同的字段个数,在打算直接复制时,不能只是修改表的名称和字段名称,还要记得修改几个?那里,个数要与字段名称保持一致!!!不然就会报错(比如我);......
  • 中国核动力研究设计院使用 DolphinDB 替换 MySQL 实时监控仪表
    随着仪表测点的大幅增多和采样频率的增加,中国核动力研究设计院仪控团队原本基于MySQL搭建的旧系统已经无法满足大量数据并发写入、实时查询和聚合计算的需求。他们在研究DB-Engines时序数据库榜单时了解到国内排名第一的DolphinDB。经过测试,发现其非常符合业务需求,并且在2022......
  • javascript数据类型
    原视频:https://www.bilibili.com/video/BV15T411j7pJ?p=9&vd_source=9752cdd43d8570cd76479220c765bc34一、数据类型分类number:数字类型,整型,浮点型,二进制,十六进制(如0x99=十进制的9*16+9=153),八进制,NaNstring:字符串boolean:布尔型truefalseundefined:未定义类型null:空对象unde......
  • DateTimeOffset
     vara=DateTimeOffset.UtcNow;varb=DateTimeOffset.Now;a.Dump("Utc时间");a.LocalDateTime.Dump("转本地时间,去掉时区");b.Dump("当前时间");b.ToOffset(newTimeSpan(1,0,0)).Dump("utc时间加时区");b.UtcDateTime.Dump("当前时间转utc时间......