DATETIME 和 SMALLDATETIME 的内部存储

DATETIME 和 SMALLDATETIME 的内部存储—-DATETIME和SMALLDATETIME的内部存储与我们输入的或者显示的是完全不一样的。具体的不多说了—-看下面的演示 –1.datetime的内部存储 declare@dtdatetimeset@dt=current_timestamp  —datetime在数据库中是以8字节存储的前4个存储的是以1900-01-01为基准算出

大家好,又见面了,我是你们的朋友全栈君。

—-DATETIME SMALLDATETIME的内部存储与我们输入的或者显示的是完全不一样的。具体的不多说了

—-看下面的演示

 

–1.datetime的内部存储

 

declare @dt datetime

set @dt= current_timestamp

 

 

—datetime在数据库中是以8字节存储的前4个存储的是以1900-01-01为基准算出来的天数,后4位存储的是午夜0点之后的时钟周期数,每个时钟周期是1/300秒,即3.33毫秒。

select @dt as dt

 

/*结果

dt

———————–

2010-05-06 16:18:34.543

 

(1 行受影响)

*/

select convert(varbinary(8),@dt) as dtbinary 转化为存储的进制字符串

 

/*结果

dtbinary

——————

0x00009D6E010CC61B

*/

 

取前4位转化为天数,下面2条语句的执行结果应该是一样的

select convert(int,substring(convert(varbinary(8),@dt),1,4)) as dtday1

select datediff(day,0,@dt)  as dtday2

 

/*结果

     dtday1

———–

      40302

 

(1 行受影响)

 

     dtday2

———–

      40302

*/

取后4位转化秒数,下面2条语句的执行结果应该是一样的

select convert(int,substring(convert(varbinary(8),@dt),5,4))/300 as dts1 时钟周期数/300 为秒数

select datediff(s,convert(char(10),@dt,112),@dt)  as dts1

 

/*结果

       dts1

———–

      58714

 

(1 行受影响)

 

       dts1

———–

      58714

 

(1 行受影响)

*/

 

 

–2.smalldatetime的内部存储

 

declare @sdt smalldatetime

set @sdt= current_timestamp

 

—smalldatetime 数据类型存储天的日期和时间,但精确度低于datetime。数据库引擎将smalldatetime 值存储为两个2 字节的整数。

第一个2 字节存储1900 1 1 日后的天数。另外一个2 字节存储午夜后经过的分钟数。

select @sdt as sdt

 

/*结果

sdt

———————–

2010-05-06 16:19:00

 

(1 行受影响)

*/

 

select convert(varbinary(4),@sdt) as sdtbinary转化为存储的进制字符串

 

/*结果

sdtbinary

———-

0x9D6E03D3

 

(1 行受影响)

*/

取前2位转化为天数,下面2条语句的执行结果应该是一样的

select convert(int,substring(convert(varbinary(8),@sdt),1,2)) as sdtday1

select datediff(day,0,@sdt) as sdtday1

 

 

/*结果

    sdtday1

———–

      40302

 

(1 行受影响)

 

    sdtday1

———–

      40302

 

(1 行受影响)

*/

取后2位为分钟数,下面2条语句的执行结果应该是一样的

select convert(int,substring(convert(varbinary(8),@sdt),3,2)) as  sdtm1 午夜以后的分钟数

select datediff(mi,convert(char(10),@sdt,112),@sdt) as sdtm2

 

/*结果

      sdtm1

———–

        979

 

(1 行受影响)

 

      sdtm2

———–

        979

 

(1 行受影响)

*/

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144514.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab下的AIC和SIC准则,求助:AIC准则和SC准则不一致情况下如何判断滞后期?

    matlab下的AIC和SIC准则,求助:AIC准则和SC准则不一致情况下如何判断滞后期?Includedobservations:3994LagLogLLRFPEAICSCHQ025192.43NA1.14e-08-12.61414-12.61099-12.613021…

    2022年5月24日
    41
  • 【17】进大厂必须掌握的面试题-50个Angular面试

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 我们整理了一份主要的Angular面试问题清单,分为三部分: 角度面试问题–初学者水平 角度面试问题–中级 角度面试…

    2021年6月23日
    91
  • Hadoop面试题[通俗易懂]

    Hadoop面试题[通俗易懂]文章目录你们公司集群有多少机器,内存,硬盘,CPU?你们Hadoop、Hive、Kafka都是什么版本?你们每天的数据量有多少?数据总量是多少?分布式和集群的区别?Hadoop1和Hadoop2的区别?Hadoop1Hadoop2NameNode运行处理什么是Hadoop?说一说Hadoop的shuffle过程?Hadoop中为什么需要排序?HDFS相关概念特点缺点BlockNameNodeDataNodeEditLogFSImageSecondaryNameNodefsimage和edits合

    2022年6月29日
    23
  • EVE模拟器使用说明

    EVE模拟器使用说明本着分享和共同学习的态度,希望能给有需要的人带来帮助。 转载于:https://blog.51cto.com/dashu666/1971728

    2022年6月5日
    53
  • WebIDE的安装「建议收藏」

    WebIDE的安装「建议收藏」CreatedbyJerryWang,lastmodifiedonJun02,2015https://store.sap.com/下载安装文件:通过注册时维护的mail地址获得下载link:确保JDK或者JRE至少在1.7以上:2.所有下载的安装文件置于SAPWebIDEfolder下,hierarchy如下图所示:使用如下命令行进行安装:通过修改…

    2022年10月18日
    2
  • python 变量锁_python字符串前面加b

    python 变量锁_python字符串前面加b一、全局解释器锁(GIL)1、什么是全局解释器锁在同一个进程中只要有一个线程获取了全局解释器(cpu)的使用权限,那么其他的线程就必须等待该线程的全局解释器(cpu)使用权消失后才能使用全局解释器(cpu),即时多个线程直接不会相互影响在同一个进程下也只有一个线程使用cpu,这样的机制称为全局解释器锁(GIL)。2、全局解释器锁的好处1、避免了大量的加锁解锁的好处2、使数据更加安全,解决多线程间的…

    2025年9月25日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号