【发布时间】:2018-02-28 15:53:44
【问题描述】:
我正在使用此 SQL 查询将 _Submission_date 类型的 nvarchar(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);
我得到了上面提到的同样的错误。
有什么建议可以解决这个问题吗?
【问题讨论】:
-
你显然有一些值不是有效的 datetime2 字符串。
-
是的,数据是这种格式“2017-8-21 21:13:55.00000”我发现最终的.00000是问题的实际原因。你能告诉我什么在这种情况下怎么办?
-
我也编辑了问题
-
我现在在您的示例中看到您正在使用
datetime测试的查询,而不是datetime2。这是一个区别,因为您的示例可以与datetime2一起工作(试一试)。这可能是导致问题的另一个值。SELECT CAST('2017-8-21 21:13:55.00000' AS DATETIME2)工作正常,您的值与@SadiaRashid 所述的值不符。 -
在这两种情况下都会出现错误并不重要。正如我所说的,主要问题是最后的“.00000”。我已经确定了
标签: asp.net sql-server linq datetime casting