Ver Mensaje Individual
  #1  
Antiguo 27-09-2007
Borjaserrano Borjaserrano is offline
Registrado
 
Registrado: sep 2007
Posts: 8
Reputación: 0
Borjaserrano Va por buen camino
Realizar una consulta sobre los registros que devuelve otra consulta

Hola amigos

He heredado una base de datos con un campo Fecha_alta de tipo VARCHAR(100), si!.. increíble!

Lo primero que he hecho ha sido convertir esos campos a Date, usando un CAST. A su vez he tenido que ir concatenando partes de esos campos dado que tenían formato 'dd.mm.aaaa', y tenía que convertir esto a 'dd/mm/aaaa'

La sentencia que he empleado para esto, es la siguiente:

Código SQL [-]
SELECT * FROM MyTable WHERE MyDATE_VARCHAR != 'No Date' AND MyDATE_VARCHAR != ''
and CAST((SUBSTRING ( MyDATE_VARCHAR FROM 7 FOR 4 )||'/'||SUBSTRING ( MyDATE_VARCHAR FROM 4 FOR 2 )||'/'||SUBSTRING ( MyDATE_VARCHAR FROM 1 FOR 2 )) AS DATE) > '01/01/2001'
and CAST((SUBSTRING ( MyDATE_VARCHAR FROM 7 FOR 4 )||'/'||SUBSTRING ( MyDATE_VARCHAR FROM 4 FOR 2 )||'/'||SUBSTRING ( MyDATE_VARCHAR FROM 1 FOR 2 )) AS DATE) > '01/01/2008'


¿Cual es el problema que tengo?

Tal y como podéis ver en la sentencia SQL primero evalúo que el campo no tenga el valor 'Sin Fecha'.. Si!!, este campo no solo puede contener fechas en formato 'dd.mm.aaaa', sino también la cadena, 'Sin fecha' !.

Por culpa de estos registros con el valor 'Sin fecha', la sentencia de antes me da errores al hacer el CAST de una cadena con ese valor (no se puede convertir a DATE).

Por tanto, lo que me gustaría hacer sería una consulta que devolviera todos los registros que no tengan este dichoso valor, y una vez obtenidos, realizar otra consulta distinta sobre ellos haciendo bien el CAST.

¿Alguna idea de cómo hacer esto?

Gracias de antemano.
Responder Con Cita