2015-09-11 159 views
1

帮助。我有一些记录已插入到DATETIME列中。当我的sproc执行时,我收到这个错误:“从字符串转换日期和/或时间时转换失败。”有什么办法将错误的日期时间转换为正常的默认DATETIME格式?转换日期时更新日期时间列失败

好:enter image description here 坏:enter image description here

;with t1 as 
    (
     select 
      s1.SheetID as SheetID, 
      s1.RowNUmber as RowNumber, 
      (select max(RowNumber) from PRP_SmartSheetA where SheetID=s1.SheetID and RowNumber<s1.RowNumber) as LastRowNumber 
     from 
      PRP_SmartSheetA s1 
    ) 
    update 
     s1 
    set 
     s1.PRP_PreviousRowFinishDate= s2.Finish 
    from 
     t1 
      inner join PRP_SmartSheetA s1 
       on t1.SheetID=s1.SheetID 
       and t1.RowNUmber=s1.RowNumber 
      inner join PRP_SmartSheetA s2 
       on t1.SheetID=s2.SheetID 
       and t1.LastRowNumber=s2.RowNumber 
+1

一个DATATIME列没有格式。日期时间数据以二进制结构存储。用于显示目的的值的格式化由表示层完成。也许'PRP_PreviousRowFinishDate'或'Finish'是varchar而不是datetime。 –

+0

[阅读此](http://stackoverflow.com/questions/30032915/how-to-cast-the-datetime-to-time/30033028#30033028) –

+0

嗨,这将是很好的upvote和/或标记如果我的回答可以帮助你,就接受了,thx! – Shnugo

回答

1

你的“坏”的日期似乎是一个字符串格式为您的系统文化无效。

你可以将它们转换是这样的:

DECLARE @DateAsVarchar VARCHAR(20)='2015-09-16'; 
DECLARE @ConvertedDate AS DATETIME=CONVERT(DATETIME,REPLACE(@DateAsVarchar,'-',''),112); 
SELECT @ConvertedDate;