2009-05-28 42 views
14

是否可以在SQL Selects中使用TRY CATCH塊?在Select語句中對CONVERT嘗試捕獲

類似,對於此,例如東西:

select 
    order, 
    CONVERT(DATETIME, orderDate) 
from orders 

什麼是處理這種情況的最好方法是什麼?

+2

如果則IsDate是真實的,那麼你可以將它轉換爲約會時間。這就是IsDate的要點。 – cjk 2009-05-28 13:56:24

+0

@JohhnIdol:「標準」是什麼意思。 ISO是一個例子的標準。 orderDate有什麼不同的格式? – Sung 2009-05-28 14:05:09

+0

對不起 - 我感到困惑 - IsDate很好!如果orderDate是VarChar, – JohnIdol 2009-05-28 14:56:08

回答

20

我不知道的try-catch,但在SQL Server你有ISDATE功能,並且可以在那裏做這樣的事情

CASE WHEN ISDATE(orderDate) = 1 THEN CONVERT(DateTime, orderDate) ELSE GETDATE() END 
1

您可以使用函數ISDATE():

SELECT ISDATE('11/13/2009') 
SELECT ISDATE('13/11/2009') 
2

在SELECT子句本身中,沒有。

您可以使用,雖然ISDATE()

select 
    order, 
    CASE WHEN ISDATE(orderDate) = 1 THEN CONVERT(DATETIME, orderDate) ELSE NULL END 
from orders 
1

我不認爲一個嘗試捕捉可能裏面選擇,但外面是可能的,當你使用存儲過程的工作測試的日期。

begin try 
    select cast(strartnr as int) from table 
end try 
begin catch 
    select 10000 from table 
end catch