2011-04-28 132 views
5

我在SQL Server数据库中具有以下列date列。T-SQL:将varchar日期列转换为日期类型

的数据类型是目前varchar和日期将被存储在以下格式:2010-04-24

我运行下面的命令:

ALTER TABLE games ALTER COLUMN date date 

,但我得到了以下错误:

ERROR: Conversion failed when converting date and/or time from character string.

我在做什么错?

回答

7

可能有几个日期不起作用。您正在使用哪个版本的版本? 2008我想,如果你有一个DATE数据类型 - 对吧?

我的建议是:

1)创建类型DATE

ALTER TABLE dbo.Games 
    ADD NewDate DATE 

2的新列)运行在你的表的更新脚本,看看哪些项目将无法转换成DATE

UPDATE dbo.Games 
SET NewDate = CAST([date] AS DATE) 
WHERE ISDATE([date]) = 1 

检查ISDATE() = 1应过滤掉那些无法转换为的条目0数据类型。

一旦所有的条目已经成功转换,你总是可以删除旧[date]列,并重新命名新列回[date] - 但使用保留的字像DATE的列名是不是真的很聪明 - 我尝试使用更多的话语,更有表现力的东西(与你所处的问题领域有关)。

+0

听起来不错,但现在当我尝试运行更新行时出现以下错误:错误:executeQuery方法必须返回结果集。 – kylex 2011-04-28 16:03:19

+0

我直接使用RazorSQL运行脚本。 – kylex 2011-04-28 16:06:10

+0

@kylex:好的 - 那么你的工具必须有一个有趣的需求....这个声明应该在SQL Server Mgmt Studio中工作得很好...... – 2011-04-28 16:06:42

相关问题