mssql sqlserver date、datetime、datetime2(7)、datetimeoffset(7)、smalldatetime、time(7)、timestamp 简介及区别


摘要:
下文将讲述mssql sqlserver中 date、datetime、datetime2(7)、datetimeoffset(7)、smalldatetime、time(7)、timestamp 简介及存储长度、格式。



date:

sql server 2008新上线的数据类型,主要用于存储日期,不包含时间部分,
数据范围:1990-1-1 ~ 9999-12-31
存储空间:3字节



DateTime:

主要用于存储日期+时间部分,yyyy-MM-dd HH:mm:ss.fff 数据默认值getdate()
存储范围:1900-1-1 0:00:00.000 ~ 9999-12-31 23:59:59.997 可精确至3.33毫秒
存储空间:8字节



DateTime2(n):

DateTime2比DateTime拥有更高的存储精度,可精确到0.1微秒,n 最小值0 最大值7 缺省值7
DateTime2:存储数据格式:yyyy-MM-dd HH:mm:ss.fffffff ,精确到 0.1微秒(μs) 数据默认值 sysDatetime()才能使数据达到0.1微秒的精度
存储空间:8字节

 例:
 declare @d datetime2(3) ---代表秒后面精度为3位
 set @d = sysdatetime() 
 select @d 
 ---------------------
 2018-02-13 10:57:15.344


datetimeoffset(n):

datetimeoffset数据类型,是加入时区偏移量的数据类型,时区偏移量的标识方法为 [+|-] HH:MM
HH为00~14的2位数,为时区偏移的小时数,
MM为00~59的2位数,为时区偏移量的附加分钟数;
n值同DateTime2中的n一致 最小值0 最大值7 缺省值7
datetimeoffset:存储数据格式 yyyy-MM-dd HH:mm:ss.fffffff +/- 0:00 例: 2018-02-13 11:03:41.7330000 +00:00
存储空间:最大10字节,存储空间会随着n值的不同而发生变化



smallDatetime:

此数据类型不能精确到毫秒,数据范围为 1900-1-1 0:00:00 ~ 2079-6-6 23:59:59
存储空间:4字节



time(n)

time:主要用于存储时间,最高精度可达到秒后面的7位,精确到 0.1微秒(μs)
time:存储数据格式:HH:mm:ss.fffffff ,精确到 0.1微秒(μs) 数据默认值 sysDatetime()才能使数据达到0.1微秒的精度
time:n 最小值0 最大值7 缺省值7
存储空间:5字节

 例:
  declare @d time
  set @d =sysdatetime()
  select @d 
  ----------------------
  11:12:18.3125000


timestamp:

timestamp:是一种时间戳类型,
在数据库中,timestamp是一种计数器,当包含此列上的数据发生插入或更新操作时,计数器所在列会自动递增。
一个表格只能拥有一个时间戳列,我们可以根据时间戳是否变化,来界定此列是否被操作。
timestamp:存储空间为8字节