gpt4 book ai didi

sql-server - SQL Server smalldatetime 与 datetime2

转载 作者:行者123 更新时间:2023-12-03 15:45:59 26 4
gpt4 key购买 nike

我已经阅读了几篇关于在 SQL Server 中使用支持日期的数据类型的文章,但我仍然不确定要使用哪种数据。

人人都说用新的强大datetime2输入但 smalldatetime在内存方面仍然更方便(6 字节 vs 4 字节)

这是我的范围:

以这种方式定义的表:

Date: typeof(<Date type to choose>)
Value1: typeof(int)
Value2: typeof(int)
Value3: typeof(int)

然后我有这些要求:

Date列,我需要精确到分钟。

在这张表中,我将最多存储 每天 100 万条记录 这么大的数据。

我的问题是:我是否必须使用旧的 smalldatetype每天为我节省 2 mb?

或者

我应该使用新的和强大的 datetime2数据类型?

谢谢

最佳答案

datetime2(2)是 6 个字节,不仅可以让您获得秒,还可以获得最多 2 位毫秒( 00:00:00.0023: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

雷克斯特演示: 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,除非它是集群 key 的一部分。

引用:
  • smalldatetime
  • datetime2
  • Disk space is cheap - that is not the point! - Kimberly Tripp
  • Ever-increasing clustering key – the Clustered Index Debate……….again! - Kimberly Tripp
  • The Clustered Index Debate Continues… - Kimberly Tripp
  • 关于sql-server - SQL Server smalldatetime 与 datetime2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44472149/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com