![](/img/trans.png)
[英]Error message in SQL Server: Conversion failed when converting date and/or time from character string
[英]SQL Server ISDATE before conversion returns error “Conversion failed when converting date and/or time from character string”
我已经完成了在定义为Varchar(50)
的字段上转换日期的任务。 正如预期的那样,列中的日期有点像DECEMBER 11, 2011
这样的正常格式
我用过ISDATE(datefield)
但它说
从字符串转换日期和/或时间时转换失败
我的第二个选择是使用此语句更新列
UPDATE dbo.tbl_arrest_information
SET date_arrested = CASE
WHEN ISDATE(date_arrested) > 0
THEN CONVERT(datetime, date_arrested)
ELSE '01/01/1901'
END
我使用“ 01/01/1901”,因为它不接受空值,但会返回一个错误,指出
字符串或二进制数据将被截断
我很清楚日期字段的长度为50,所以我不知道为什么会这样。
任何建议都会有所帮助。
谢谢
我猜您的date_arrested可能是一个smalldatetime字段,它将引发ISDATE()找不到的错误,因为它假定您正在检查datetime字段。 您可能需要执行以下操作:
UPDATE dbo.tbl_arrest_information
SET date_arrested =
CASE WHEN ISDATE(date_arrested) > 0
THEN CASE WHEN date_arrested BETWEEN '1900-01-01' AND '2079-06-05' THEN CONVERT(datetime, date_arrested) ELSE '01/01/1901' END
ELSE '01/01/1901' END
您应该对ISDATE()使用正确的语言和DATEFORMAT
SET LANGUAGE us_english;
SET DATEFORMAT mdy;
SELECT ISDATE('04/15/2008'); --Returns 1.
返回1
SET LANGUAGE us_english;
SET DATEFORMAT myd;
SELECT ISDATE('15/04/2008'); --Returns 0.
还要使用CONVERT(1,2,3)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.