entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

funcion de control de flujo utilizar mas de un operador if en mysql

Estoy aprendiendo a utilizar la funcion de control de flujo Tengo una duda al agregar un segundo operador if

este es un ejemplo de una consulta, en mi registro tengo 08:00:00, al compararlo me muestra que ha llegado a tiempo, ¿se puede agregar otro if ? o éstoy mal?
lo que quiero hacer es colocar una condicion como la siguiente:
si hora de entrada <= 08:00:00
por ejemplo evalua 07:40 muestra a tiempo

si hora de entrada <=14:00:00
por ejemplo evalua 14:40:00 muestra retardo

SELECT ID_TRABAJADOR,DATE_FORMAT(REGISTRO_HORA_ENTRADA,'%H:%i:%s'),IF(DATE_FORMAT(REGISTRO_HORA_ENTRADA,'%H:%i:%s') <='08:00:00','A TIEMPO','TARDE')  FROM REGISTRO WHERE ID_TRABAJADOR=2; 

1 Respuesta

4votos

white Puntos75880

Hola @Cristi_C, puedes usar las sentencias CASE, WHEN, THEN

SELECT  IDTRABAJADOR,
        (CASE
            WHEN DATE_FORMAT(REGISTROHORAENTRADA,'%H:%i:%s') <= "08:00:00"
            THEN "a tiempo"
            WHEN DATE_FORMAT(REGISTROHORAENTRADA,'%H:%i:%s') > "08:00:00"
             AND DATE_FORMAT(REGISTROHORAENTRADA,'%H:%i:%s') < "14:00:00"
            THEN "no a tiempo"
            ELSE "ha pasado de las 14:00"
        END) AS calculo
FROM REGISTRO
WHERE IDTRABAJADOR = 2;

la columna calculo puede contener "a tiempo", "no a tiempo" o "ha pasado de las 14:00"

o si deseas usar un if anidado:

SELECT  IDTRABAJADOR,
        (IF(
            DATE_FORMAT(REGISTROHORAENTRADA,'%H:%i:%s') <= "08:00:00", "a tiempo",
         IF(DATE_FORMAT(REGISTROHORAENTRADA,'%H:%i:%s') > "08:00:00", "no a tiempo", "no a tiempo"))) AS calculo
FROM REGISTRO
WHERE IDTRABAJADOR>0

0voto

Cristi_C comentado

Hola @white ,de verdad muchas gracias, eres todo un experto, esto me ha sido de gran ayuda has despejado el problema que tenia en mis intentos de consulta de los if anidados.

Saludos @white

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta