2016-11-27 55 views
0

我得到一個錯誤:SQL服務器ISDATE檢查工作不正常

Conversion failed when converting date and/or time when converting from character string

用下面的代碼:

select 
    case 
     when isdate('19' + left(somestring, 6)) = 1 
      then cast('19' + left(somestring, 6) as date) 
    end 
from 
    sometable 

誰能告訴我什麼,我做錯了什麼?

另外,我將如何去看看導致錯誤的字符串?

+0

你能表現出一定的樣本數據 – TheGameiswar

+0

在我的例子somestring的前10個值不給錯誤都開始用「000101」,併成功轉換爲'1900-01-01'。基本上我期待前6位數字的格式爲yymmdd並添加'19'來形成一個ccyymmdd日期字符串。不是所有的字符串都符合這種格式,因此isdate()檢查不符合我的預期。我不知道如何找到違規字符串的價值? –

+0

嘗試像這樣嘗試'TRY_CAST('12/31/2010'AS date)' – TheGameiswar

回答

0

從SQL Server 2012開始,您可以使用 TRY_CAST來確保轉換不會失敗,但返回null

在你的情況,它的一些東西像下面

TRY_CAST('19' + LEFT(somestring, 6) AS DATE)