Tsql 从字符串错误转换日期和/或时间时转换失败
在Management Studio中运行上述T-SQL语句时,出现以下错误: “从字符串转换日期和/或时间时转换失败” 我是否可以成功地将该值转换为有效的日期类型?我在nvarchar(255)列中有这样的值,我想在SQL Server表中将其数据类型更改为日期类型,但我遇到了该错误,我想首先在表上的Update语句中进行转换。试试这个Tsql 从字符串错误转换日期和/或时间时转换失败,tsql,sql-server-2008-r2,Tsql,Sql Server 2008 R2,在Management Studio中运行上述T-SQL语句时,出现以下错误: “从字符串转换日期和/或时间时转换失败” 我是否可以成功地将该值转换为有效的日期类型?我在nvarchar(255)列中有这样的值,我想在SQL Server表中将其数据类型更改为日期类型,但我遇到了该错误,我想首先在表上的Update语句中进行转换。试试这个 Select CONVERT(Date, '13-5-2012') 使用“mm-dd-yyyy”格式。一般来说,我怀疑在一列中通常存在无法转换的数据,并会使
Select CONVERT(Date, '13-5-2012')
使用“mm-dd-yyyy”格式。一般来说,我怀疑在一列中通常存在无法转换的数据,并会使用case语句首先检查其可转换性:
Select CONVERT(Date,'5-13-2012')
我相信Convert
依赖于SQL Server日期格式设置。请使用DBCC USEROPTIONS
检查日期格式设置
我怀疑如果您将dateformat设置为dmy
,它会理解:
SELECT CASE WHEN ISDATE(mycolumn)=1 THEN CONVERT(Date, mycolumn, [style]) END
FROM mytable
如果即使这样,它也不起作用,您也找不到与数据匹配的样式,并且如果数据的格式一致,则需要通过手动字符串操作来构建它(如果可以帮助,请不要这样做)。指定您使用的日期格式:
SET DATEFORMAT dmy
GO
105表示带世纪的意大利日期格式(dd-mm-yyyy)
Ref:CONVERT假设原始数据可以表示日期。一个坏数据项可以抛出与这里提到的相同的转换错误,而不会指向问题 使用ISDATE帮助我避开了坏数据项 选择转换(日期、转换(字符(8)、字段名)) 来自DBName
其中ISDATE(FieldName)0转换时需要提供日期格式,这将解决错误
选择convert(date,'13-5-2012',103)我已经测试过了,它可以工作,但我在一个表中有几百行,列中的值为'13-5-2012'格式,我想将该列的数据类型从nvarchar(255)更改为date,但由于'13-5-2012'值,它不被接受。因此,我想运行一个update语句,将“13-5-2012”转换为“5-13-2012”
Select CONVERT(Date, '13-5-2012', 105)