参考:SQL Server的日期和时间类型

SQL Server使用 Date 表示日期,time表示时间,使用datetime和datetime2表示日期和时间。

1、秒的精度

  秒的精度是指TSQL使用多少位小数,DateTime数据类型秒的精度是3,DateTime2和Time可以控制秒的精度,语法是DateTime2(n)和time(n),n的取值范围是0-7,默认值是7。

2、DateTime

  DateTime数据类型存储日期和时间,需要8个字节的固定存储空间,默认的数据格式是yyyy-MM-dd hh:mm:ss.xxx,表示从1753年1月1日到9999年12月31日的日期和时间数据,精确度为3.33毫秒或0.00333秒,即可以表示的日期范围从公元1753年1月1日00:00:00.000 到9999年12月31日23:59:59.997 ,精确到3.33毫秒。

  Microsoft SQL Server 用两个 4 字节的整数内部存储 datetime 数据类型的值。第一个 4 字节存储 base date (即 1900 年 1 月 1 日)之前或之后的天数。基础日期是系统参考日期。不允许早于 1753 年 1 月 1 日的 datetime 值。第一个4 字节:1900 年1 月1 日当日为0 ;之前的日期是负数,之后日期是正数。另外一个 4 字节存储以10/3 毫秒数所代表的每天的时间。

select CAST(0 as datetime)
select CAST(1 as datetime)
select CAST(31 as datetime)
select CAST(365 as datetime)

  使用GetDate()GetUTCDate()为DateTime类型的变量赋值,这两个函数返回值的类型是DateTime

3、DateTime2

  DateTime2数据类型 存储日期和时间,需要的存储空间不固定。根据存储的时间部分 fractional seconds precision来确定DateTime2的Storage Size,6 bytes for precisions less than 3; 7 bytes for precisions 3 and 4. All other precisions require 8 bytes.

  DateTime2可以表示比DateTime更精确的时间,默认的数据格式是yyyy-MM-dd hh:mm:ss.nnnnnnn,DateTime2 秒默认的精度是7,即用7位小数表示一秒的精度。表示从0000年1月1日到9999年12月31日的日期和时间数据。

  DateTime2的语法是:

datetime2 [ (fractional seconds precision) ]

  为DateTime2类型的变量赋值,需要使用SysDateTime()SysUTCDateTime(),这两个函数返回值的类型是DateTime2(7)。

4、Date

  Date数据类型只存储日期,不存储时间,需要3B的存储空间,默认的数据格式是yyyy-MM-dd,支持的日期范围从0001-01-01到9999-12-31

  可以使用日期字符串,getdate()函数和sysdatetime()函数为Date类型的变量赋值。

5、Time

  Time数据类型 只存储时间,不存储日期,需要5B的存储空间.

  Time默认的fractional second precision是7,默认的数据格式是hh:mm:ss.nnnnnnn

  Time数据类型的语法:

time [ (fractional second precision) ]

  推荐使用时间字符串sysdatetime()函数为Time类型的变量赋值。不推荐使用GetDate()函数,GetDate()函数返回的是DateTime类型,时间部分的fractional second precision没有time类型高,如果对时间的precision要求高,请使用时间字符串和sysdatetime()函数为Time类型的变量赋值。

7、查看变量占用的字节数

  DataLength能过返回任意数据类型的变量所占用的字节数量,从下图中,可以看到,datetime占用的存储空间太大,精度不高,datetime2完胜datetime,在产品环境中,推荐使用datetime2

declare @dt1 datetime
declare @dt2 datetime2(2)
declare @dt3 datetime2(4) set @dt1=getdate()
set @dt2=getdate()
set @dt3=SYSDATETIME() select DATALENGTH(@dt1),DATALENGTH(@dt2),DATALENGTH(@dt3),@dt1,@dt2,@dt3

  如果对time的要求不是很高,保留2位毫秒,使用datetime2(2),比其他类型节省存储空间。

8、datetime与datetime2 tips

【MSSQL】SQL Server的日期和时间类型的更多相关文章

  1. SQL Server的日期和时间类型

    Sql Server使用 Date 表示日期,time表示时间,使用datetime和datetime2表示日期和时间. 1,秒的精度是指使用多少位小数表示秒 DateTime数据类型秒的精度是3,D ...

  2. SQL 中的日期和时间类型

    在我们SQL中一般支持三种数据类型. date:日历日期,包括年(四位),月和日. time: 一天中的时间,包括小时,分和秒.可以用变量time(p)来表示秒的小数点后的数字位数(默认是0). 通过 ...

  3. Sql Server中日期时间格式化为字符串输出

    在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...

  4. SQL Server 日期和时间类型

    在Microsoft SQL Server的类型系统中,使用 date 表示日期类型,使用time表示时间类型,使用DateTime和DateTime2表示日期和时间的组合,DateTime2是Dat ...

  5. SQL Server 数据恢复到指点时间点(完整恢复)

    SQL Server 数据恢复到指点时间点(完整恢复) 高文龙关注2人评论944人阅读2017-03-20 12:57:12 SQL Server 数据恢复到指点时间点(完整恢复) 说到数据库恢复,其 ...

  6. piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql

    piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql 需要不个mssql的sql文件导入mysql.他们的时间戳格式不同..ms用的是自定义的时 ...

  7. SQL server数据库中的DateTime类型出现的问题

    我们知道这个SQL server数据库中的DateTime类型是数据库应用开发中经经常使用到的一种数据类型.而C#语言中也有DateTime类型,尽管二者都是用来描写叙述时间的,可是它们的默认值是不同 ...

  8. php连接微软MSSQL(sql server)完全攻略

    http://www.jb51.net/article/98364.htm php连接微软MSSQL(sql server)完全攻略 作者:吵吵 字体:[增加 减小] 类型:转载 时间:2016-11 ...

  9. MySQL数据类型--日期和时间类型

    MySQL中的多种时间和格式数据类型 日期和时间类型是为了方便在数据库中存储日期和时间而设计的.MySQL中有多种表示日期和时间的数据类型. 其中,year类型表示时间,date类型表示日期,time ...

随机推荐

  1. 抓包工具Fiddler的使用说明

    软件介绍 Fiddler是一个C#实现的浏览器抓包和调试工具,fiddler启用后作为一个proxy存在于浏览器和服务器之间,从中监测浏览器与服务器之间的http/https级别的网络交互.目前可以支 ...

  2. Codeforces963C Frequency of String 【字符串】【AC自动机】

    题目大意: 给一个串s和很多模式串,对每个模式串求s的一个最短的子串使得这个子串中包含至少k个该模式串. 题目分析: 均摊分析,有sqrt(n)种长度不同的模式串,所以有关的串只有msqrt(n)种. ...

  3. Matplotlib学习---用matplotlib画误差线(errorbar)

    误差线用于显示数据的不确定程度,误差一般使用标准差(Standard Deviation)或标准误差(Standard Error). 标准差(SD):是方差的算术平方根.如果是总体标准差,那么用σ表 ...

  4. ConnectionAbortedError: [WinError 10053] 您的主机中的软件中止了一个已建立的连接

    socket服务端在接收socket客户端时抛出异常 ConnectionAbortedError: [WinError 10053] 您的主机中的软件中止了一个已建立的连接. socket服务端代码 ...

  5. bzoj 3674: 可持久化并查集加强版 (启发式合并+主席树)

    Description Description:自从zkysb出了可持久化并查集后……hzwer:乱写能AC,暴力踩标程KuribohG:我不路径压缩就过了!ndsf:暴力就可以轻松虐!zky:…… ...

  6. mac上安装ta-lib

    Now I am ready to start installing TA-Lib. Generally I followed the steps listed in here. 1. Install ...

  7. HDU5758 Explorer Bo 思维+树形dp

    题意自己看题目吧,挺短的. 思考过程:昨天感觉一天不做题很对不起自己,于是晚上跑到实验室打开别人树形dp的博客做了上面最后一个HDU的题,也是个多校题..一开始没有头绪了很久,因为起点不固定,所以这1 ...

  8. shell中定义变量用双引号和单引号以及不用引号的区别

    1. 单引号 使用单引号的情况下,不管里面的是否有变量或者其他的表达是都是原样子输出 2. 双引号 如果其定义变量的时候使用双引号的话,则里面的变量或者函数会通过解析,解析完成后再输出内容,而不是把双 ...

  9. jsp model1

    一.model1(纯jsp技术): 1.dao:data access object,数据访问对象,即专门对数据库进行操作的类,一般说dao不含业务逻辑. 2.当进行跳转时候,需要用servlet来实 ...

  10. 使用Docker Swarm搭建分布式爬虫集群

    https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653195618&idx=2&sn=b7e992da6bd1b2 ...