hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

【原创】C# 计时周期数(Ticks)在差别数据库上的完成

2019-11-18杂谈搜奇网56°c
A+ A-

着手之前,先来看看 Ticks 在微软官方文档上的定义:

注解
一个计时周期示意一百纳秒,即一千万分之一秒。 1 毫秒内有 10,000 个计时周期,即 1 秒内有 1,000 万个计时周期。
此属性的值示意自0001年1月1日半夜 12:00:00 0:00:00 (公历日期为0001年1月1日,UTC 时候为公历)的100纳秒距离数,示意 DateTime.MinValue。 它不包含由闰秒构成的计时周期数。

从上面的定义可知,1tick = 100纳秒,别的要弄邃晓几个时候单元的转换规则:
1秒 = 1000毫秒
1毫秒 = 1000玄妙
1微秒 = 1000纳秒
1tick=100纳秒
1微秒=10tick

  盘算公式:Ticks = (1970年01月01日00:00:00  ~ DateTime ) 的刻度值  + 621355968000000000,个中 621355968000000000 示意从 0000年00月00日00:00:00 ~ 1970年01月01日00:00:00的刻度值。下面以 2019-11-06 12:11:11.1234567 这个时候为例,演示在差别数据库上盘算 Tick 的完成。

SqlServer 中的完成

SELECT (DATEDIFF_BIG(NANOSECOND,'1970-01-01','2019-11-06 12:11:11.1234567') / 100 + 621355968000000000) AS Ticks
-- 637086390711234567

MySQL 中的完成:

SELECT (TIMESTAMPDIFF(MICROSECOND,'1970-01-01','2019-11-06 12:11:11.1234560') * 10 + 621355968000000000) AS Ticks
-- 637086390711234560
-- 注重:MySQL 时候的小数位最大仅支撑 6 位

Oracle 中的完成

SELECT
(((TRUNC(TO_TIMESTAMP('2019-11-06 12:11:11.1234567','yyyy-mm-dd hh24:mi:ss.ff')) - TO_DATE('1970-01-01','yyyy-mm-dd')) * 86400000 
+ TO_NUMBER(TO_CHAR(TO_TIMESTAMP('2019-11-06 12:11:11.1234567','yyyy-mm-dd hh24:mi:ss.ff'),'hh24')) * 3600000 
+ TO_NUMBER(TO_CHAR(TO_TIMESTAMP('2019-11-06 12:11:11.1234567','yyyy-mm-dd hh24:mi:ss.ff'),'mi')) * 60000 
+ TO_NUMBER(TO_CHAR(TO_TIMESTAMP('2019-11-06 12:11:11.1234567','yyyy-mm-dd hh24:mi:ss.ff'),'ss')) * 1000) * 10000 
+ TO_NUMBER(TO_CHAR(TO_TIMESTAMP('2019-11-06 12:11:11.1234567','yyyy-mm-dd hh24:mi:ss.ff'),'ff7')) 
+ 621355968000000000) AS Ticks
FROM DUAL;
-- 637086390711235000

PostgreSQL 中的完成

SELECT 
((((DATE_TRUNC('DAY','2019-11-06 12:11:11.1234560'::TIMESTAMP)::DATE - '1970-01-01'::DATE) * 86400000::BIGINT 
+ DATE_PART('HOUR', '2019-11-06 12:11:11.1234560'::TIMESTAMP) * 3600000 
+ DATE_PART('MINUTE', '2019-11-06 12:11:11.1234560'::TIMESTAMP) * 60000) * 10000 
+ DATE_PART('MICROSECOND', '2019-11-06 12:11:11.1234560'::TIMESTAMP) * 10)::BIGINT 
+ 621355968000000000::BIGINT) AS Ticks
-- 637086390711234560 
-- 注重:PostgreSQL 时候的小数位最大仅支撑 6

 

看,终究运转效果与在 C# 代码里运转的效果都是一致的。

技术交流群:816425449

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
【原创】C# 计时周期数(Ticks)在差别数据库上的完成

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282391.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

上一篇 调试webpack
下一篇 redis入门(三)

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>