2009-05-28 8 views
14

¿Es posible usar bloques TRY CATCH en SQL Selects?INTRODUCIR CAPTURA en un CONVERTIR en una instrucción seleccionada

Para la materia similar a esto, por ejemplo:

select 
    order, 
    CONVERT(DATETIME, orderDate) 
from orders 

Cuál es la mejor manera de manejar esta situación?

+2

Si IsDate es cierto, entonces se puede lanzar como una fecha y hora. Ese es el punto de IsDate. – cjk

+0

@JohnIdol: ¿qué quiere decir con "estándar". ISO es un estándar para un ejemplo. ¿Cuáles son los diferentes formatos para orderDate? – Sung

+0

lo siento - me estaba confundiendo - IsDate está bien! – JohnIdol

Respuesta

20

no saber sobre try-catch, pero en SQL Server que tienen la función ISDATE y puedo allí para hacer algo como

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

no funciona si orderDate es VarChar – Cherven

+6

¿Qué pasa si el formato de fecha es diferente? – Asher

1

Puede utilizar la función de ISDATE():

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

En la cláusula SELECT, no.

Puede comprobar la fecha y aunque el uso de ISDATE()

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

No creo que un intento de captura es posible dentro de una selección, pero fuera es posible cuando se trabaja con procedimientos almacenados.

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