2016-05-15 54 views
1

我有一個列導入到Azure SQL DB,該列應該僅由日期組成,但當然包含錯誤。tsql在可能的情況下將字符串轉換爲日期

TSQL我想這樣做:轉換爲日期,如果可能,否則爲空。

有誰知道一個語句來測試字符串到日期的可轉換性嗎?

+0

你需要接受任何一個答案可以幫助你,其他明智的這盆會顯示爲未答覆。如果您對以下任何答案不滿意,則可能需要更新問題關於什麼不是通過下面的答案解決 – TheGameiswar

回答

1

你可以使用TRY_PARSE

返回表達式的結果,translat編輯到所請求的數據類型,如果轉換失敗,則返回null。僅適用於從字符串轉換爲日期/時間和數字類型的TRY_PARSE

SELECT TRY_PARSE('20129901' AS DATE) 
-- NULL 

Additionaly您可以添加文化:

SELECT TRY_PARSE('10/25/2015' AS DATE USING 'en-US') 

和進口:

INSERT INTO target_table(date_column, ...) 
SELECT TRY_PARSE(date_string_column AS DATE) ... 
FROM source_table 
... 
+0

謝謝,這就是我一直在尋找 –

2

使用TryCast或ISDATE

select 
try_Cast('test' as date) 
select try_Cast('4' as date) 

select case when ISDATE('test')=1 then cast('test' as date) else null end 

如果表達式不是預期的格式..ie TryCast會失敗,如果表達的顯式轉換是不允許

select 
try_cast(4 as xml) 
select try_Cast(4 as date) 
+0

這甚至更好謝謝 –