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