es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Consulta SQL de Ms Access para obtener cumpleaños entre dos fechas.

Consulta de SQL de Ms Access para obtener cumpleaños entre dos fechas

Quiero saber quién cumple años entre una fecha determinada. Por ejemplo, DesdeFecha: 27-11-2021 HastaFecha: 02-12-2021. Quiero obtener todos los cumpleaños entre DesdeFecha y HastaFecha.

Lo que intenté:

SELECT * FROM tblMembers WHERE (Month(DOB) = 11 AND Day(DOB) >= 27) AND (Month(DOB) = 12 AND Day(DOB) <= 02 and Year(DOB)>1753) OR (Month(DOB) > 11 AND Month(DOB) < 12 and Year(DOB)>1753) and status=’Activo’ Order by Month(dob), Day(dob)

Cuando el mes Desde y el mes Hasta son iguales, la consulta anterior es correcta, pero si los meses son diferentes, no se muestra ningún dato.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener los cumpleaños entre dos fechas en MS Access SQL, modifique la cláusula WHERE de la siguiente manera:

    SELECT * FROM tblMembers
    WHERE
        Month(DOB) * 100 + Day(DOB) >= Month('27-11-2021') * 100 + Day('27-11-2021')
    AND
        Month(DOB) * 100 + Day(DOB) <= Month('02-12-2021') * 100 + Day('02-12-2021')
    AND
        Year(DOB) > 1753
    AND
        status='Activo'
    ORDER BY Month(DOB), Day(DOB)
    

    Explicación:

    • La función Month() devuelve el mes numérico a partir de la fecha (1 para enero, 2 para febrero, etc.)
    • La función Day() devuelve el día del mes (1-31)
    • Para comparar el mes y el día de cumpleaños con las fechas dadas, los concatenamos en un número de 4 dígitos (mes * 100 + día) y los comparamos como enteros.
    • También incluimos una verificación del año, ya que Access devolverá un error para fechas anteriores a 1753.
    • Finalmente, ordenamos los resultados por mes y día.

    Con esta consulta, debería poder obtener todos los cumpleaños entre las fechas dadas, independientemente de si los meses son diferentes.

Comments are closed.