【发布时间】: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
【问题讨论】:
-
试试看这里。 stackoverflow.com/questions/11081571/…。编辑:简而言之,使用 Datepart 将 datetime2 拆分为多个部分,然后使用这些部分创建一个 Datetime
-
我看到了,就是看不懂代码。
-
我修复了一列,现在另一列出错了。
-
猜测这篇文章更有可能是您超出范围错误的来源。 stackoverflow.com/questions/16197735/… datetime2 还支持比 datetime 更早的日期——不仅仅是更精确。 (即 1/1/0001)
-
@RThomas,也看到了,没有日期会超出范围,但它们可能为空。不过谢谢!
标签: sql sql-server-2008 ssms