mysql ticks_【原创】C# 计时周期数(Ticks)在不同数据库上的实现

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

注解

一个计时周期表示一百纳秒,即一千万分之一秒。1 毫秒内有 10,000 个计时周期,即 1 秒内有 1,000万个计时周期。

此属性的值表示自0001年1月1日午夜12:00:00 0:00:00 (公历日期为0001年1月1日,UTC 时间为公历)的100纳秒间隔数,表示 DateTime.MinValue。 它不包括由闰秒组成的计时周期数。

52f8fe26dcd3223b71701b2cd61cf125.png

从上面的定义可知,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 位

07494a2ac85dd18018e16fec9c2e9ebc.png

看,最终运行结果与在 C# 代码里运行的结果都是一致的。

技术交流群:816425449

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Spring Boot测试中使用Testcontainer进行数据库集成测试

在此博客文章中,我想演示如何在Spring Boot测试中集成Testcontainer以便与数据库一起运行集成测试。 我没有使用Testcontainers的Spring Boot模块。 如何与他们合作,我将在另一篇博客文章中进行介绍。 所有示例都可以在GitHub上找到 。 为什么要使用测试…

php模块安装 pdo_mysql_关于php插件pdo_mysql的安装

今天在做一个商城的连接的时候,需要MpDO验证。需要安装pdo_mysql模块,刚开始按照php扩展模块的安装按照这个安装ZIP,curl都成功了但是安装pdo_mysql却不行,在./configure --with-php-config/usr/local/php/bin/php-config是出现错误。如下che…

java8串行和并行的区别_垃圾收集器–串行,并行,CMS,G1(以及Java 8中的新增功能)...

java8串行和并行的区别4个Java垃圾收集器–错误的选择如何严重影响性能 在2014年,对于大多数开发人员来说,还有两件事仍然是个谜:垃圾收集和了解异性。 由于我对后者知之甚少,所以我认为我会对前者大吃一惊,尤其是因为…

python函数参数学习_python学习笔记-11.函数参数和返回值进阶

1. 函数参数和返回值的作用函数根据有没有参数以及有没有返回值,可以相互组合,共有4种形式:无参数,无返回值无参数,有返回值有参数,无返回值有参数,有返回值定义函数时,是否接收参数…

java spr_Java中的42行代码中的URL缩短器服务(Java(?!)Spring Boot + Redis

java spr显然,编写URL缩短服务是新的“ Hello,world! ”在IoT /微服务/时代的世界中。 一切始于在45行Scala中的URL缩短服务 -整洁的Scala,以Spray和Redis进行调味以进行存储。 紧随其后的是, 在35行Clojure中提供了ur…

python邮件发送哪个好_python发邮件(一)

复习模块如果我们要发送邮件,就需要用到smtplib模块的以下方法:1、import smtplib #引入smtplib模块2、server smtplib.SMTP() #server为变量,通过SMTP指定一个服务器,这样才能把邮件送到另一个服务器,SMTP…

SSL Kafka经纪人从Kafka Mirror Maker迁移到Brooklin的挑战

问题 从卡夫卡镜子制造商转移到布鲁克林有我在这里所写的优势。 但是,进行这种迁移并不容易,因为它本来应该如此。 我面临的主要挑战是:在消费者Kafka经纪人和Brooklin之间建立SSL连接 解 SSL问题 事实证明,这个问题比我预期的要…

mysql移动数据的语句是_mysql基本语句

MySQL关系型数据库RDS中的老大哥,增删改查是MySQL入门的基础增删改查语句增删改查的语句命令为增:insert删:delete改:update查:SELECT或者show库操作创建数据库:create database shujukuba;创建带字符集的数…

jetty嵌入式容器_嵌入式Jetty和Apache CXF:借助Spring Security来保护REST服务

jetty嵌入式容器最近,我遇到了一个非常有趣的问题,我认为这只需要几分钟就可以解决:在Linux中使用Spring Security (当前稳定版本3.2.5 )保护Apache CXF (当前版本3.0.1 )/ JAX-RS REST服务。在…

python逻辑运算符的使用_总结Python中逻辑运算符的使用

下表列出了所有python语言支持的逻辑运算符。假设变量a持有10和变量b持有20,则:示例:试试下面的例子就明白了所有的python编程语言提供了逻辑运算符:#!/usr/bin/pythona 10b 20c 0if ( a and b ):print "line 1 - a and b are true&q…

如何使用用户数据脚本在EC2实例上安装Apache Web Server

你好朋友, 在本教程中,我们将看到如何使用用户数据脚本在EC2实例上安装Apache Web Server。 在我以前的教程之一中,我已经解释了如何使用AWS控制台启动EC2实例。如果您还没有完成该操作,我建议您先进行一下操作。 首先&#xf…

java 常量接口_java接口定义常量研究

背景和同事讨论到,在接口中定义常量的问题,引发了争论,即,假如在接口中定义变量,是否需要用static来限定的问题,或者说用static和不用static会有什么区别。引论package spring.interfaceTest;public interf…

spring 多租户_使用Spring Security的多租户应用程序的无状态会话

spring 多租户从前, 我发表了一篇文章,解释了构建无状态会话的原理 。 巧合的是,我们再次为多租户应用程序执行同一任务。 这次,我们将解决方案集成到Spring Security框架中,而不是自己构建身份验证机制。 本文将解释…

java api 1.6 下载_Java JDK API

JDKJavaDevelopmentKit是SunMicrosystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。JDK是整个Java的核心,包括了Java运行环境。相关软件软件大小版本说明下载地址jdk(Java Development Kit)是Sun Microsystems针对java开…

Java / Cloud:如何快速创建支持Kubernetes的REST微服务

可以肯定地说,如今微服务与云的结合风靡一时。 微服务的开发比以往任何时候都多,从而导致应用程序部署数量增加。 在过去的十年中,开发了诸如Docker和Kubernetes之类的容器化和编排工具,从而使微服务模式真正易于采用。 本文将教…

java考试安徽工业大学_2011~2012《Java语言程序设计》试卷A及答案(安徽工业大学)...

《2011~2012《Java语言程序设计》试卷A及答案(安徽工业大学)》由会员分享,可在线阅读,更多相关《2011~2012《Java语言程序设计》试卷A及答案(安徽工业大学)(6页珍藏版)》请在人人文库网上搜索。1、装 订 线 安 徽 工 业 大 学 试 题 纸(一)20112012学年第…

jsr303自定义验证_JSR 310新日期/时间API的自定义JSR 303 Bean验证约束

jsr303自定义验证借助JSR 310,Java 8终于为我们带来了不错的日期和时间API。 对于仍在使用Java 7的那些人(就像我目前在我的当前项目中一样),有很好的反向移植,请访问www.threeten.org了解更多详细信息。 但是&#xf…

java spring注入 静态方法_JAVA静态方法中如何使用spring@Value进行注入的成员变量...

背景:一个旧项目原本集成有spring-session,现需要临时添加缓存的操作,需要复用spring-session中的一些缓存配置。实现方法:一、类上添加注解Component二、定义静态成员变量private static String redisUrl;private static String …

使用Testcontainers和PostgreSQL,MySQL或MariaDB的Spring Boot测试

Testcontainers是一个Java库,可轻松将Docker容器集成到JUnit测试中。 在Containerized World中 ,将测试配置与嵌入式数据库和服务复杂化几乎没有意义。 而是使用在Docker中运行您的服务,并让Testcontainers为您管理此服务。 在此博客文章中&…

使用Spring Boot和Project Reactor处理SQS消息-第2部分

这是我关于使用Spring Boot和Project Reactor有效处理SQS消息的博客文章的后续文章 我在第一部分中列出了一些方法上的差距。 1.处理SQS客户端调用中的失败 2.该方法一次只能处理来自SQS的一条消息,如何并行化 3.它不处理错误,管道中的任何错误都会中…