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 行受影响)

*/

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • JS、ActiveXObject、Scripting.FileSystemObject

    JS、ActiveXObject、Scripting.FileSystemObjectJavascript之文件操作(IE)一、功能实现核心:FileSystemObject对象要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象。&#1

  • python获取股票历史数据_量化交易之如何获取股票历史数据并存为csv

    python获取股票历史数据_量化交易之如何获取股票历史数据并存为csv量化研究尤其是进行基于价值投资的量化研究,需要上市公司的历史估值数据,如市盈率PE,市净率PB,或者市销率PS,市现率PCF。而有的人喜欢用exce或者csv文件的格式存放数据并且分析。我这里介绍一个网站,BaoStock,既支持直接下载历史数据为csv,也支持用程序下载数据并生成csv格式。网站地址是www.baostock.com,如果要下载历史估值数据,进入首页后,选择“沪深A股估值指标(日…

  • ifconfig 与 ip addr 命令详解 – 学习/实践

    ifconfig 与 ip addr 命令详解 – 学习/实践1.应用场景 主要用于了解学习,掌握使用IP地址相关知识, 如何查看IP信息,以及各个参数代表的含义 2.学习/操作 1.文档阅读 网络协议概论|Laravel学院-不定期分享之ifconfig与ipaddr命令详解 2.整理输出 2.1如何查看机器的IP地址 我们在Linux系统查看IP地址通常有以下两种方式: 1)ifconfig 2)ipaddr

  • 详解PhpStudy集成环境升级MySQL数据库版本

    详解PhpStudy集成环境升级MySQL数据库版本

    2021年10月22日
  • numpy.meshgrid()理解

    numpy.meshgrid()理解一句话解释numpy.meshgrid()——生成网格点坐标矩阵。关键词:网格点,坐标矩阵网格点是什么?坐标矩阵又是什么鬼?我先问个问题:这张图你会生成吗?…

  • 计算机网络知识汇总(超详细整理)

    计算机网络知识汇总(超详细整理)为了准备期末考试,同时也是为了之后复习方便,特对计算机网络的知识进行了整理。本篇内容大部分是来源于我们老师上课的ppt。而我根据自己的理解,将老师的PPT整理成博文的形式以便大家复习查阅,同时对于一些不是很清楚的地方,我去查阅了相关资料进行补充,当然也会有部分个人看法夹带其中来帮助大家理解。

发表回复

您的电子邮箱地址不会被公开。

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