Sql server nvarchar数据类型到日期时间的转换

Sql server nvarchar数据类型到日期时间的转换,sql-server,Sql Server,我已按如下方式执行新查询: alter table tenancy_extend_old alter column createdate datetime 但它会显示如下错误消息: 味精242,第16级,第3状态,第1行 nvarchar数据类型转换为datetime数据类型导致值超出范围。 声明已终止 请帮帮我。谢谢我建议您: -创建一个名为CD的新列,其类型为datetime -使用合适的格式更新数据帐户。如果您的数据始终采用2001年12月18日的格式(这可能不是假设旧列为varchar

我已按如下方式执行新查询:

alter table tenancy_extend_old alter column createdate datetime
但它会显示如下错误消息: 味精242,第16级,第3状态,第1行 nvarchar数据类型转换为datetime数据类型导致值超出范围。 声明已终止

请帮帮我。谢谢

我建议您:

-创建一个名为
CD
的新列,其类型为
datetime
-使用合适的格式更新数据帐户。如果您的数据始终采用2001年12月18日的格式(这可能不是假设旧列为varchar),那么您可以使用:

UPDATE tenancy_extend_old
SET CD = CONVERT(DATETIME,createdate ,100)
您可能会收到相同的错误,因为最初有人选择了不正确的数据类型,因此您需要使用Aarons建议来查找错误数据


完成此操作后,删除旧列并重命名新列

由于数据类型选择错误,您的数据不正确。您可以使用以下方法(可能):
从dbo.tenancy\u extend\u old中选择createdate,其中ISDATE(createdate)=0表中是否有数据。如果是,那么它是数据时间数据吗?是的,我有数据,例如12月18日201WELL,然后修复您的数据错误以满足<代码>日期时间<代码>(1753年1月1日,12月31日,9999)的要求,或者如果您实际上存储了从201年开始的日期,考虑使用<代码> DATEMEM2(一月,1,AD,通过12月31日,9999 AD)。如果您使用的是SQL Server(2008+)的最新版本,并且不需要时间数据,则可以使用日期(公元1月1日至1999年12月31日)。这将取决于
'Dec 18 201'
是否实际指的是201年,或者是否有人明显错误地键入了
2001
2010
2011