T-SQL:将varchar日期列转换为日期类型

时间:2011-04-28 15:34:10

标签: tsql date

我在SQL Server数据库中有以下列date

数据类型目前为varchar,日期按以下格式存储:2010-04-24

我正在运行以下命令:

ALTER TABLE games ALTER COLUMN date date

但是我收到以下错误:

  

错误:转换日期和/或时间时转换失败   字符串。

我做错了什么?

1 个答案:

答案 0 :(得分:7)

可能有一些日期不起作用。你使用的是哪个版本的SQL Server? 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应该过滤掉那些无法转换为DATE数据类型的条目。

成功转换完所有参赛作品后,您可以随时删除旧[date]列并将新列重命名为[date] - 但使用DATE之类的保留字列名不是很聪明 - 我会尝试使用更多的说法,更具表现力的东西(与您所处的问题域有关)。