在 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pandas 中将数据格式更改为“%Y%m%d”?

无法将登录更改为 SQL SSMS [重复]

想在AngularJS中将格式从日期时间更改为日期

DateTime vs DateTime2 [重复]

DateTime 和 DateTime2 之间的区别 [重复]

在 sql server 中将 varchar yyyy-mm-dd T hh:mm 转换为 datetime2