smalldatetime 占4位精确到分钟。时间从1900.1.1到2079.6.6
datetime占8位精确到毫秒。时间从1753.1.1到9999.12.31
1.datetime2:精确到0.1微秒
datetimeoffset数据类型,加入了时区偏移量部分,时区偏移量表示为 [+|-] HH:MM。 HH 是范围从 00 到 14 的 2 位数,表示时区偏移量的小时数。 MM 是范围从 00 到 59 的 2 位数,表示时区偏移量的附加分钟数。 时间格式支持到最小 100 毫微秒。 必需的 + 或 - 符号指示在 UTC(通用协调时间或格林尼治标准时间)中是加上还是减去时区偏移量以获取本地时间。
2.DateTime、DateTime2、DateTimeOffset区别
| DateTime | DateTime2 | DateTimeOffset |
日期范围 | 1753-01-01到 9999-12-31 | 0001-01-01 到 9999-12-31 | 0001-01-01 到 9999-12-31 |
时间范围 | 00:00:00 到 23:59:59.997 | 00:00:00 到 23:59:59.9999999 | 00:00:00 到 23:59:59.9999999 |
存储字节大小 | 8字节 | 精度小于 3 时为 6 个字节;精度为 3 和 4 时为 7 个字节。 所有其他精度则需要 8 个字节 | 精度小于 3 时为 6 个字节;精度为 3 和 4 时为 7 个字节。 所有其他精度则需要 8 个字节 |
精度 | 舍入到 .000、.003 或 .007 秒三个增量。 | 100 纳秒 | 100 纳秒 |
支持自定义小数精度 | 否 | 是 | 是 |
时区 | 无 | 无 | -14:59 到 +14:59 |
博主注:smalldatetime sqlserver2008是精确到3%秒的,上述精确到min可能sqlserver版本不同。
3、补充说明
DateTime字段类型对应的时间格式是yyyy-MM-dd HH:mm:ss.fff,3个f,精确到1毫秒(ms),示例2014-12-0317:06:15.433。
DateTime2(7)字段类型对应的时间格式是yyyy-MM-dd HH:mm:ss.fffffff,7个f,精确到0.1微秒(μs),示例2014-12-0317:23:19.2880929。
如果用SQL的日期函数进行赋值,DateTime字段类型要用GETDATE(),DateTime2字段类型要用SYSDATETIME()。