2015-09-11 157 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;