CAST()未更改为日期时间格式

时间:2017-09-19 18:38:06

标签: asp.net sql-server linq datetime casting

我正在使用此SQL查询将我的_Submission_datenvarchar(max)转换为datetime格式:

SELECT
    CAST(PSCData._SUBMISSION_DATE AS DATETIME2)
FROM 
    PSCData

我已经尝试了所有可能的方法,但仍然给出了这个错误:

  

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

_Submission_Date中的数据采用以下格式:

"2017-8-21 21:13:55.00000"
"2017-9-21 14:13:55.00000"

当我运行此查询时,它可以正常工作:

SELECT CAST('2017-08-25' AS DATETIME);

但采用以下格式:

SELECT CAST('2017-9-21 14:13:55.00000' AS DATETIME);

我得到了上面提到的相同错误。

我有什么建议可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

找到解决方案。实际问题是字符串周围的双引号导致错误,可以像这样解决:

update PscData
SET _SUBMISSION_DATE = REPLACE(_SUBMISSION_DATE,'"', '')

select CAST(PSCData._SUBMISSION_DATE as DATETIME2)
FROM PSCData

即:首先使用REPLACE方法删除字符串周围的双引号,而不是使用强制转换方法,并且可以轻松转换" varchar"输入数据到" datetime"格式没有任何问题。另外,你必须使用" datetime2"在演员方法中作为" datetime"不会用它。 感谢帮助btw :)