将nvarchar转换为日期-将转换字符串转换为datetime错误

时间:2018-07-24 13:33:56

标签: sql sql-server

我已经搜索并尝试了所有方法来解决此问题,但是没有运气。我有一个Start_Date格式的日期(12/1/2017)(数据类型nvarchar),我需要将其转换为日期2017-12-01格式,以便与另一个开始日期进行比较采用2017-12-01格式。

我尝试了

UPDATE #temp2 
SET [start_date] = CONVERT(NVARCHAR(255), CONVERT(SMALLDATETIME,[start_date], 105))

但我收到此错误:

  

第242条消息,级别3,状态3,第1行
  将nvarchar数据类型转换为smalldatetime数据类型会导致值超出范围。

2 个答案:

答案 0 :(得分:0)

您可以使用cast(),而无需使用样式代码:

select *
from #temp2 t
where cast([start_date] as date) = ?

答案 1 :(得分:0)

我建议:

update #temp2
    set [start_date] = CONVERT(NVARCHAR(255), TRY_CONVERT(SMALLDATETIME,[start_date], 105))
    where TRY_CONVERT(SMALLDATETIME, [start_date]) is not null;

这将更新字符串代表日期的值,同时保留其余值。