当我不需要存储秒数时,有什么理由不使用 SMALLDATETIME 吗?
Any good reason not using SMALLDATETIME when I don't need to store seconds?
使用 SQL 服务器 2014:
我正在处理一些大型日志 table,其中一列是 CreateDate
,数据类型为 DateTime
。
有一些索引基于 CreateDate
列。所有 table 已包含大量行。
问题 #1:是否有充分的理由不将所有 CreateDate
列转换为 SMALLDATETIME
类型?
问题 #2:是否有安全的 alter table table 语句将现有的 DATETIME
数据转换为 SMALLDATETIME
没有任何错误?
问题 #3:当我使用 ALTER TABLE
时,基于 CreateDate
的现有索引会发生什么情况?
是的,您可以针对您的情况使用小日期时间数据类型。
处理smalldatetime时的警告
Smalldatetime 每次都是 0 秒,没有毫秒。但请注意,小日期时间会将分钟值舍入到最接近的分钟值。
例如,如果您的日期时间列包含类似“2016-08-06 11:49:31.667”的值。那么小日期时间值将为“2016-08-06 11:50”。它已将日期时间四舍五入到最接近的值第 50 分钟,实际上是第 49 分钟。
我认为最好的修改数据的方式
我的建议是再创建一个数据类型为 smalldatetime 的列。并通过将您的日期时间列转换为 smalldatetime 来更新它。并删除您的日期时间列。
更改数据类型时的索引器部分
来到索引器。您可以在此列上创建相同的索引器。据我所知,在 Smalldatetime 上安装 Indexer 比在 datetime 上安装它要好。因为 datetime 值在每列的最大值中以毫秒为单位不同。
希望以上信息对您有所帮助。
老实说,如果它没有坏,就不要改变它。至少,不要在没有全面调查和计划的情况下更改它。原因如下:
使用 SQL 服务器 2014:
我正在处理一些大型日志 table,其中一列是 CreateDate
,数据类型为 DateTime
。
有一些索引基于 CreateDate
列。所有 table 已包含大量行。
问题 #1:是否有充分的理由不将所有 CreateDate
列转换为 SMALLDATETIME
类型?
问题 #2:是否有安全的 alter table table 语句将现有的 DATETIME
数据转换为 SMALLDATETIME
没有任何错误?
问题 #3:当我使用 ALTER TABLE
时,基于 CreateDate
的现有索引会发生什么情况?
是的,您可以针对您的情况使用小日期时间数据类型。
处理smalldatetime时的警告
Smalldatetime 每次都是 0 秒,没有毫秒。但请注意,小日期时间会将分钟值舍入到最接近的分钟值。
例如,如果您的日期时间列包含类似“2016-08-06 11:49:31.667”的值。那么小日期时间值将为“2016-08-06 11:50”。它已将日期时间四舍五入到最接近的值第 50 分钟,实际上是第 49 分钟。
我认为最好的修改数据的方式
我的建议是再创建一个数据类型为 smalldatetime 的列。并通过将您的日期时间列转换为 smalldatetime 来更新它。并删除您的日期时间列。
更改数据类型时的索引器部分
来到索引器。您可以在此列上创建相同的索引器。据我所知,在 Smalldatetime 上安装 Indexer 比在 datetime 上安装它要好。因为 datetime 值在每列的最大值中以毫秒为单位不同。
希望以上信息对您有所帮助。
老实说,如果它没有坏,就不要改变它。至少,不要在没有全面调查和计划的情况下更改它。原因如下: