在 SSMS 中将 Datetime2 更改为 Datetime
Posted
技术标签:
【中文标题】在 SSMS 中将 Datetime2 更改为 Datetime【英文标题】:Change Datetime2 to Datetime in SSMS 【发布时间】:2014-09-18 03:34:09 【问题描述】:我需要将一列的数据类型从 Datetime2(7)
更改为 Datetime
,我有很多采用这种格式的记录,所以当我尝试更改数据类型时,我收到以下错误:
The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.
如何更改数据,然后更改该列的数据类型?我需要为不兼容的应用程序切换到不太精确的数据类型的原因。此应用程序直接连接,因此无法在代码中进行转换。我在 SSMS 内部工作。
将一列固定为:
select *, cast(calldate as datetime)) * from records
但不适用于使用相同 Cast
的另一列 - 它给出了超出范围的错误。也许有些字段是空的——这会是个问题吗?如果是这样,我尝试了这个(同样的错误):
select *, cast(closedate as datetime) from records where closedate is not null
【问题讨论】:
试试看这里。 ***.com/questions/11081571/…。编辑:简而言之,使用 Datepart 将 datetime2 拆分为多个部分,然后使用这些部分创建一个 Datetime 我看到了,就是看不懂代码。 我修复了一列,现在另一列出错了。 猜测这篇文章更有可能是您超出范围错误的来源。 ***.com/questions/16197735/… datetime2 还支持比 datetime 更早的日期——不仅仅是更精确。 (即 1/1/0001) @RThomas,也看到了,没有日期会超出范围,但它们可能为空。不过谢谢! 【参考方案1】:DECLARE @TestTime as DateTime2
SET @TestTime = (SELECT CAST(GetDate() as datetime2))
SELECT CAST(@TestTime AS datetime)
当我在第一组之后运行它时 @TestTime = "2014-09-24 15:39:02.7970000"。 结果是“2014-09-24 15:39:02.797”
【讨论】:
以上是关于在 SSMS 中将 Datetime2 更改为 Datetime的主要内容,如果未能解决你的问题,请参考以下文章