none
Deseo obtener una consulta SQL RRS feed

  • Pregunta

  • Hola Amigos:

    Tengo una Tabla que a continuación se detalla:

    Tbl_Registro:  idregistro(CP) as int, fecha_completa as datetime

    Y la Tbl_Registro tiene estos datos:

    1.......... 2018-05-04 08:00:00

    2...........2018-04-28 10:24:39

    3...........2018-05-08 16:00:00

    4...........2018-05-08 00:00:00

    5...........2018-05-08 00:00:00

    6...........2018-05-10 00:00:00

    Y CON UNA CONSULTA DESEO OBTENER LA FECHA COMPLETA DEL CAMPO "fecha_completa" as DATETIME, SIEMPRE EN CUANDO LA HORA SEA DIFERENTE DE LAS 00:00:00 HORAS, ASI COMO ESTÁ ABAJO:

    IDREGISTRO, FECHA_COMPLETA:

    1.......... 2018-05-04 08:00:00

    2...........2018-04-28 10:24:39

    3...........2018-05-08 16:00:00

    4...........2018-05-08

    5...........2018-05-08

    6...........2018-05-10

    Lo he intentado con esta consulta: SELECT idregistro, fecha_completa FROM Tbl_Registro

    Pero no sale los datos que deseo obtener, yo sólo quiero que me aparezca la fecha completa cuando la hora sea diferente de las 00:00:00 horas. 

    Gracias de antemano.


    miércoles, 9 de mayo de 2018 17:02

Respuestas

  • Hola Deivid Barrios:

    Puede ser así

    SELECT idregistro,
           fecha_completa,
           CASE
               WHEN(DATEPART(hour, fecha_completa)) + (DATEPART(minute, fecha_completa)) + (DATEPART(second, fecha_completa)) = 0
               THEN CONVERT(VARCHAR(10), fecha_completa, 20)
               ELSE CONVERT(VARCHAR(19), fecha_completa, 20)
           END AS fecha
    FROM Tbl_Registro; 

    En el case evaluamos, que no tiene ni horas, ni minutos, ni segundos, dado que la suma de los tres valores es 0 y delvovemos, si es correcto, la fecha en formato corto.

    Si es incorrecto, por tanto tiene horas, en formato largo.

    Un saludo

    • Marcado como respuesta Deivid Barrios miércoles, 9 de mayo de 2018 17:47
    miércoles, 9 de mayo de 2018 17:27

Todas las respuestas

  • Hola Deivid Barrios:

    Puede ser así

    SELECT idregistro,
           fecha_completa,
           CASE
               WHEN(DATEPART(hour, fecha_completa)) + (DATEPART(minute, fecha_completa)) + (DATEPART(second, fecha_completa)) = 0
               THEN CONVERT(VARCHAR(10), fecha_completa, 20)
               ELSE CONVERT(VARCHAR(19), fecha_completa, 20)
           END AS fecha
    FROM Tbl_Registro; 

    En el case evaluamos, que no tiene ni horas, ni minutos, ni segundos, dado que la suma de los tres valores es 0 y delvovemos, si es correcto, la fecha en formato corto.

    Si es incorrecto, por tanto tiene horas, en formato largo.

    Un saludo

    • Marcado como respuesta Deivid Barrios miércoles, 9 de mayo de 2018 17:47
    miércoles, 9 de mayo de 2018 17:27
  • Javier Fernández F:

    Un cordial saludo y gracias por ayudarme con este problema. Para mi estaba muy dificil.

    Tengo una pregunta más para hacer y lo haré en unas horas. Espero seguir contando con su ayuda.

    miércoles, 9 de mayo de 2018 18:01