2009-05-28 13 views
14

SQL selects içinde TRY CATCH blokları kullanmak mümkün mü?Bir select deyimde bir CONVERT üzerinde TRY CATCH

örneğin buna benzer şeyler için:

select 
    order, 
    CONVERT(DATETIME, orderDate) 
from orders 

Bu senaryoyu işleme en iyi yolu nedir?

+2

, o zaman bir şekilde yayınlayabilmek için datetime. IsDate'in amacı bu. – cjk

+0

@JohnIdol: "standart" ile ne demek istiyorsun? ISO bir örnek için bir standarttır. OrderDate için farklı formatlar nelerdir? – Sung

+0

üzgünüm - Kafam karışıyordu - IsDate iyidir! Eğer orderDate VarChar ise – JohnIdol

cevap

20

Ben try-catch bilemem ama SQL Server sen ısdate fonksiyonu bulunan ve için böyle bir şey yoktur yapabilirsiniz

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

çalışmıyor – Cherven

+6

Tarih Formatı farklıysa ne olur? – Asher

1

Sen fonksiyon ısdate() kullanabilirsiniz:

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

SELECT deyiminin kendisinde, no. Ben bir deneyin catch seçkin içeride mümkün olduğunu düşünüyorum ama dışarıda saklanan prosedürleri çalışırken mümkündür yok ISDATE()

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

kullanarak olsa

Bir tarih için test edebilirsiniz.

MS SQL Server
begin try 
    select cast(strartnr as int) from table 
end try 
begin catch 
    select 10000 from table 
end catch 
İlgili konular