毫秒值转时间,实间毫秒

 admin   2025-05-28 02:45   28 人阅读  0 条评论

网友都想知道毫秒值转时间的话题,关于实间毫秒之类的题,小编为你介绍一下吧!


在谈论时间之前,我们首先了解两个概念挂钟和单调时钟。

挂钟也称为挂钟。大多数是自1970年1月1日以来的秒和毫秒。实时可以与NTP同步,但如果本地时钟比NTP服务器快很多,则强制重置后会跳转到之前的时间点。

单调时钟大多数机器都有自己的晶体振荡器并将其用作计时器。单调时钟的绝对值没有任何意义,根据操作系统和语言的不同,它可能在程序启动时设置为0,也可能在计算机启动后设置为0。但是,通过比较同一台计算机上两个单调时钟之间的差异,可以获得相对准确的时间间隔。

Go19之前的记录相对简单一些整数s和ns以及从1-1-100:00:00到现在的时区数据。这是一个挂钟

Time结构记录从19开始的挂钟和单调时钟。Wall和ext一起记录时间,但有两种情况。

typeTimestruct一种类型不记录单调时钟,另一种类型记录单调时钟。墙上的第一个位是标记位。

值1表示记录了单调时钟。墙上的第2到34位记录自1885年1月1日以来的秒数,最后30位记录纳秒数。然后ext记录自程序开始执行以来经过的单调时钟数。单位是纳秒

0表示不记录单调时钟。在本例中,wall的第2位到第34位均为0。ext记录自1-1-100:00:00以来经过的秒数。

单调时钟的计算逻辑如下。

varstartNano=0funcinitruntimeNano-startNanoTime实际上实现了String函数,因此可以打印它。打印时间的格式为“年、月、日、时、分、秒、小数秒”,精度为ns,格式如下34;表示单调时钟。s数值表示,精确到ns小数点

functTimeStringstringbuf=appendIntbuf,intm1,widbuf=appendbuf,39;buf=appendIntbuf,intm2,9了解完golang中的时间格式表示,我们再看一下mysql中的时间格式表示。

MySQLDATETIME存储包含日期和时间的值。当您从DATETIME列查询数据时,MySQL以YYYY-MM-DDHH:MM:SS格式显示DATETIME值。默认情况下,DATETIME值的范围为1000-01-0100:00:00到9999-12-3123:59:59。DATETIME使用5个字节进行存储。此外,DATETIME值可以采用以下格式YYYY-MM-DDHH:MM:SS[fraction]。例如,使用秒小数作为尾数2017-12-2010:01:00999999。如果包含小数秒精度,DATETIME值需要更多存储空间。2017-12-2010:01:00999999需要8个字节。2015-12-2010:01:00需要5个字节。3个字节就是999999,2017-12-20103336001:009只需要6个字节,1个字节小数秒精度。在MySQL564之前,DATETIME值需要8字节存储,而不是5字节。

TIMESTAMP需要4个字节,而DATETIME需要5个字节。TIMESTAMP和DATETIME都需要额外的字节才能获得小数秒精度。

TIMESTAMP范围从1970-01-0100:00:01UTC到2038-01-1903:14:07UTC。

如果你想存储2038年之后的时间值,你应该使用DATETIME而不是TIMESTAMP。

总结一下,常用的版本57最多只能存储2038个时间戳。精度以秒为单位,但只需要4个字节。DATETIME存储5到8个字节的时间,精度为微秒。

那么题来了,如果我使用golang驱动编写mysql,并检查mysql中的数据,准确度是什么样的?显然,在写入数据时,从ns舍入到us时精度会丢失。

结果,err:=dbExec34;timeNow,查询得到

39;Motomasa何时发生?githubcom/go-sql-driver/mysql在版本150及更早版本中,驱动程序中的时间四舍五入到最接近的毫秒,但在版本160中,它们不再四舍五入。


本篇文章关于毫秒值转时间和实间毫秒的相关信息已解完毕,希望对大家有所帮助。

本文地址:http://www.scg036.com/post/1298.html
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?