SQL - Ayuda consulta en mysql

   
Vista:

Ayuda consulta en mysql

Publicado por Anna (1 intervención) el 10/04/2016 04:59:30
Buenas noches!
Queria saber si esta cosulta esta bien dado que no doy muy bien con lo de las cosulta
gracias de ante mano !

se me pide una consulta que muestre el código del trabajador y nombre del trabajador para aquellos trabajadores que ingresaron el segundo trimestre del año 2000.

la consulta que di como tal es esta
SELECT EMP.CODIGO,EMP.NOMBRE
FROM EMP,LIQ
WHERE EMP.CODIGO = LIQ.CODIGO_EMP AND EMP.FECHA_INGRESO <= TO_DATE('30/MAY/2000','dd/mon/yyyy') AND EMP.FECHA_INGRESO >= TO_DATE('01/APR/2000','dd/mon/yyyy');

y esta
select EMP.CODIGO, EMP.NOMBRE FROM EMP e where YEAR(e.fecha_ingreso) = 2000 and QUARTER(e.fecha_ingreso) = 2;


Untitled
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda consulta en mysql

Publicado por leonardo_josue (877 intervenciones) el 11/04/2016 19:00:12
Hola Anna:

En primero lugar hay que aclarar el rango de fechas que deberías considerar, si estamos hablando de TRIMESTRES, entonces un año tiene 4 trimestres: de Enero a Marzo, de Abril a Junio, de Julio a Septiembre y de Octubre a Diciembre... tú estás considerando en la primer consulta desde el 01 de abril hasta el 30 de Mayo (Además Mayo tiene 31 días O_o) por lo tanto no estás considerando el periodo de fechas completo.

Ahora bien, la sintaxis que estás manejando en tu primer consulta no corresponde a MySQL, si no que es de ORACLE: la función TO_DATE no existe en MySQL, por lo tanto marcaría error. En MySQL puedes manejar todas las fechas en formato ANSI, es decir: YYYY-MM-DD HH24:MI:SS, de tal suerte que NO TIENES QUE REALIZAR CONVERSIONES EXPLÍCITAS, basta con que hagas algo como esto:

1
2
3
4
...
EMP.FECHA_INGRESO >= '2016-04-01 00:00:00' AND
EMP.FECHA_INGRESO <= '2016-06-30 23:59:59'
...

Ahora bien, si tu campo FECHA es de tipo DATE y no DATETIME, puedes omitir la parte de las horas, o en su defecto, puedes manejar sólo la FECHA, sin la hora con la función DATE, es decir, hacer algo como esto:

1
2
3
4
...
DATE(EMP.FECHA_INGRESO) >= '2016-04-01' AND
DATE(EMP.FECHA_INGRESO) <= '2016-06-30'
...

También puedes aplicar el operador BETWEEN para hacer más simple la consulta:

1
2
3
...
DATE(EMP.FECHA_INGRESO) BETWEEN '2016-04-01' AND '2016-06-30'
...

En el caso de la segunda consulta, esta en realidad es la mejor opción que tienes para hacerlo, y las funciones YEAR y QUARTER son perfectamente válidas en MySQL.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar