none
Ver registros que no se pueden convertir a fecha RRS feed

  • Pregunta

  • Hola a todos, ayuda con esto que creo que es simple:

    Tengo una tabla con dos columnas, ID y cadena, id es autoincrement y cadena es varchar, ahora bien son 1000000 registros y quiero que con una consulta me retorne aquellos registros de los cuales las  cadenas no pueden ser convertidas a fecha:

    Ejemplo

    1 01/02/2015

    2 05/06/2015

    3 mmadj

    4 40/12/2015

    5 01/01/2014

    Resultado:

    3

    4


    Roy Sillerico

    lunes, 6 de abril de 2015 21:50

Respuestas

  • Si tenes SQL Server 2012 o superior podes hacer lo siguiente:

    SELECT * FROM MITABLA WHERE TRY_PARSE(CAMPO_VARCHAR AS DATE) IS NOT NULL;


    martes, 7 de abril de 2015 0:53
  • Ronald,

    entiendo que para lo que pide Roy sería al revés:

    SELECT * FROM MITABLA WHERE TRY_PARSE(CAMPO_VARCHAR AS DATE) IS NULL;

    En cualquier caso, TRY_PARSE depende del CLR de .NET, si te da problemas puedes usar TRY_CAST o TRY_CONVERT. (Siempre que estemos hablando de SQL SERVER 2012 o superior)

    martes, 7 de abril de 2015 7:04
  • Hola Roy, 

    Prueba con algo como

    case when ISDATE(campo) = 1 then cast(campo as date) else null end

    https://msdn.microsoft.com/es-es/library/ms187347.aspx?f=255&MSPPError=-2147217396

    Un saludo.

    Pau

    martes, 7 de abril de 2015 10:44

Todas las respuestas

  • Si tenes SQL Server 2012 o superior podes hacer lo siguiente:

    SELECT * FROM MITABLA WHERE TRY_PARSE(CAMPO_VARCHAR AS DATE) IS NOT NULL;


    martes, 7 de abril de 2015 0:53
  • Ronald,

    entiendo que para lo que pide Roy sería al revés:

    SELECT * FROM MITABLA WHERE TRY_PARSE(CAMPO_VARCHAR AS DATE) IS NULL;

    En cualquier caso, TRY_PARSE depende del CLR de .NET, si te da problemas puedes usar TRY_CAST o TRY_CONVERT. (Siempre que estemos hablando de SQL SERVER 2012 o superior)

    martes, 7 de abril de 2015 7:04
  • Hola Roy, 

    Prueba con algo como

    case when ISDATE(campo) = 1 then cast(campo as date) else null end

    https://msdn.microsoft.com/es-es/library/ms187347.aspx?f=255&MSPPError=-2147217396

    Un saludo.

    Pau

    martes, 7 de abril de 2015 10:44
  • Gracias a todos, bueno antes de que respondas logre hacerlo manualmente, pero bueno nuevamente gracias a todos.

    Roy Sillerico

    martes, 7 de abril de 2015 12:49