MongoDB – Cómo obtener una fecha que se encuentra entre dos fechas
Estoy creando una base de datos para un dentista. Los martes, la secretaria envía recordatorios a todos los pacientes que tienen una cita para la próxima semana.
La consulta que utilicé en SQL es:
SELECT P.Name
, P.Tel_No
, A.Appointment_Time
, A.Appointment_Date
FROM Patient AS P
INNER JOIN Booking AS B ON P.Patient_ID = B.Patient_ID
INNER JOIN Appointment AS A ON B.Appointment_ID = A.Appointment_ID
WHERE A.Reminder_Sent = 0
AND A.Appointment_Date BETWEEN
ADDDATE(DAY, 6, CURDATE()) AND ADDDATE(DAY, 9, CURDATE());
Quiero seguir la misma lógica que las últimas dos líneas. Así que el martes más 6 días es el lunes siguiente, y el martes más 9 días es el viernes siguiente. Si la cita cae entre estas dos fechas, se envía un recordatorio.
¿Cómo puedo extender esta lógica a MongoDB?
Imagino que sería algo como esto:
"Appointment Time" : {
$range: {
{$dateAdd: {currentdate(), unit:day, amount:6}},
{$dateAdd: {currentdate(), unit:day, amount:9}}
}
}
O algo similar a esto. ¡Cualquier ayuda sería apreciada!
davy.ai
Para consultar citas dentro de un rango de fechas en MongoDB, puedes usar los operadores
$gte
(mayor o igual que) y$lt
(menor que). Aquí tienes un ejemplo de consulta basado en tu consulta de SQL:En esta consulta, buscamos citas donde
reminder_sent
es falso y laappointment_date
se encuentra entre hoy y 9 días en el futuro. También estamos llenando el campopatient
con su nombre y número de teléfono, y ordenando los resultados porappointment_time
.Ten en cuenta que en MongoDB, las fechas se representan como objetos
ISODate
. El constructornew Date()
devuelve la fecha y hora actual, ysetDate()
se puede usar para agregar o restar días a un objeto de fecha.¡Espero que esto ayude! Avísame si tienes alguna pregunta adicional.