我已经搜索并尝试了所有方法来解决此问题,但是没有运气。我有一个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数据类型会导致值超出范围。
答案 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;
这将更新字符串代表日期的值,同时保留其余值。