datetime2(2)
是 6 个字节,不仅可以为您提供秒数,还可以为您提供最多 2 个毫秒的位置(00:00:00.00
通过23:59:59.99
)。
smalldatetime
是 4 个字节,并且有可能为每行节省 2 个字节,如果此列是集群键的一部分,那么保存的这 2 个字节将对每个非聚集索引产生影响。
的一个重要特征smalldatetime
是它舍入到最接近的分钟而不是截断秒。根据数据插入表的方式以及是否需要此行为,您可能需要在将其插入表之前对该值进行额外的预处理。
例子:
create table t (sdt smalldatetime, dt2 datetime2(2))
insert into t values
('2017-01-01T11:22:22.33','2017-01-01T11:22:22.33')
,('2017-01-01T11:22:33.33','2017-01-01T11:22:33.33')
select
sdt = convert(char(23),sdt,121)
, dt2 = convert(char(23),dt2,121)
from t
rextester 演示:http ://rextester.com/JPMEE57778
返回:
+-------------------------+-------------------------+
| sdt | dt2 |
+-------------------------+-------------------------+
| 2017-01-01 11:22:00.000 | 2017-01-01 11:22:22.33 |
| 2017-01-01 11:23:00.000 | 2017-01-01 11:22:33.33 |
+-------------------------+-------------------------+
datetime2(2)
我真的不喜欢这种四舍五入,所以尽管每天节省 2mb,除非它是集群密钥的一部分,否则这对我来说可能就足够了。
参考: