到目前为止的SQL Server转换字符串

时间:2013-05-25 22:44:38

标签: sql-server

我的转换字符串到目前为止存在问题。问题是,我创建了表,并且我有大量记录的数据库,我应该将它加载到我的表中。我搜索了任何解决方案,但我发现只有SELECT或CONVERT但奇异的记录。

这是错误消息:

  

从字符串转换日期和/或时间时转换失败。

我应该如何修复许多记录(SQL Server)?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果我理解您的问题,那么您的一个或一些插入语句就会出现问题。假设您可以更改INSERT语句,那么您可以按照之前的评论者的建议使用ISDATE

INSERT INTO table_name
VALUES('Lisiak','Anna',
    CASE WHEN ISDATE('1968-05')=1 THEN '1968-05' ELSE '1/1/1753' END,
    CASE WHEN ISDATE('1998-01-01')=1 THEN '1998-01-01' ELSE '1/1/1753' END);

SQL Fiddle Demo

由于您是小提琴示例,因为日期字段不为空,我使用1/1/1753作为无效日期 - 相应地更改。

如果由于某种原因无法更改INSERT语句,则另一个选项是将表更改为接受varchar而不是datetime。然后相应地转换和改变。

UPDATE table_name
SET data_ur = CASE WHEN ISDATE(data_ur)=1 THEN data_Ur ELSE '1/1/1753' END;

ALTER TABLE table_name ALTER COLUMN data_ur DATE NOT NULL;

Another Fiddle

答案 1 :(得分:0)

好的,我的列顺序错误,因此将名称作为日期,并尝试将varchar转换为日期。我很感谢你的帮助:)。