Select CONVERT(Date, '13-5-2012')
当我在Management Studio中运行上述T-SQL语句时,我得到以下错误:
“从字符串”
转换日期和/或时间时转换失败有没有我可以成功地将该值转换为有效的日期类型?我在nvarchar(255)列中有这样的值,其dataType我想在SQL Server表中更改为Date类型但我已经遇到该错误,我想首先在表上的Update语句中进行转换。
答案 0 :(得分:11)
指定您使用的日期格式:
Select CONVERT(Date, '13-5-2012', 105)
105表示意大利日期格式与世纪(dd-mm-yyyy)。
答案 1 :(得分:4)
一般情况下,我怀疑通常存在无法在列中转换的数据,并且会使用case语句检查它是否可以转换为:
SELECT CASE WHEN ISDATE(mycolumn)=1 THEN CONVERT(Date, mycolumn, [style]) END
FROM mytable
我相信Convert
依赖于SQL Server日期格式设置。请使用DBCC USEROPTIONS
检查您的日期格式设置。
我怀疑如果你将dateformat设置为dmy
它会理解:
SET DATEFORMAT dmy
GO
如果即使它不起作用,也找不到与您的数据匹配的样式,如果您的数据是一致的格式,那么可以通过手动字符串操作来构建它(如果这样做,则不要这样做你可以帮助它。)
答案 2 :(得分:0)
试试这个......
Select CONVERT(Date,'5-13-2012')
使用'mm-dd-yyyy'格式。
答案 3 :(得分:0)
CONVERT假设原始数据可以表示日期。一个错误的数据项可以抛出相同的转换错误而不指向问题。
使用ISDATE帮助我解决了不良数据项。
SELECT CONVERT(DATE,CONVERT(CHAR(8),FieldName)) FROM DBName WHERE ISDATE(FieldName)<> 0
答案 4 :(得分:0)
您需要在转换时提供日期格式,这样可以解决错误。
选择转换(日期,' 13-5-2012',103)