SQL Server 日期和时间类型

本文详细介绍了SQL Server中的日期和时间类型,包括DateTime、DateTime2、Date、Time及DateTimeOffset,强调了DateTime2作为DateTime的升级版,提供了更高的精度和可调整的小数秒精度。还讨论了本地时间与UTC时间的区别,以及如何处理时区问题。此外,文章提到了DateDiff()函数的使用以及12小时制和24小时制的概念。
摘要由CSDN通过智能技术生成

在Microsoft SQL Server的类型系统中,使用 date 表示日期类型,使用time表示时间类型,使用DateTime和DateTime2表示日期和时间的组合,DateTime2是DateTime的升级版本,这些数据类型占用的存储空间各不相同;当存储大量数据时,合理的选择小数秒的精度,能够节省数据的占用空间。

当表示国际时间时,存在本地时间和UTC时间之别,同一个时刻,UTC时间是固定的,而本地时间由于时区的差异而不相同。如果一个数据实体的时间字段对时区敏感,那么可以使用DateTimeOffset数据类型,该类型不仅包含本地的日期和时间,还包括本地的时区,用户能够根据本地的时间和时区推算出UTC时间,公式是:UTC时间=本地时间+时区偏移。

小数秒的精度(fractional seconds precision)是指使用多少位小数表示一秒,DateTime2、Time和DataTimeOffset可以控制小数秒的精度,语法是DateTime2(n)、time(n),DataTimeOffset(n),n是小数秒的精度,n的取值范围是0-7,默认值是7,即使用7位小数表示1s,能够表示的最小精确时间(Accuracy)是100ns。DateTime数据类型的最小精确时间是3.33毫秒(0.00333秒),其精确度不高,建议在产品环境中,使用DateTime2(n)来代替DateTime类型。

一,日期和时间类型

DateTime2(n)表示日期和时间,Date只表示日期,Time(n)只表示时间,最后简单介绍DateTime类型。

1,DateTime2数据类型

DateTime2(n)数据类型存储日期和时间,它是DateTime的升级版本,由于小数秒n的精度可以自主设置,其存储大小(Storage Size)不固定,DateTime2(n)占用的存储空间和小数秒的精度之间的关系是:

  • DateTime2(n)内部存储的第一个字节存储精度n,后续的字节用于存储值。
  • 当小数秒的精度 n < 3 时,存储空间是1B(精度)+ B(数据);
  • 当小数秒的精度 n 是 3 - 4 时,存储空间是1B(精度)+ 7B(数据);
  • 当小数秒的精度 n 是 5 - 7 时,存储空间是1B(精度)+ 8B(数据),最大的小数秒精度是7,默认值是7;

DateTime2可以表示比DateTime更精确的时间,默认的数据格式是yyyy-MM-dd hh:mm:ss.nnnnnnn,DateTime2 秒默认的精度是7,即用7位小数表示一秒的精度。

datetime2 [ (fractional seconds precision) ]

下面两种声明DateTime2变量的方式是等价的:

declare @dt2 datetime2(7)
declare @dt2 datetime2

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

declare @dt2 datetime2
set @dt2=SYSDATETIME()

3,Date数据类型

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

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

declare @d date
set @d='2015-07-02'
set @d=getdate()
set @d=SYSDATETIME()

4,Time类型

Time(n)数据类型只存储时间,不存储日期,需要5B的存储空间。Time(n)小数秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悦光阴

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值