SQL Server 日期和时间类型

2022-11-16 00:00:00 日期 时间 小数 精度 时区

在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) ]


				
	

相关文章