Por favor, ayuda con la siguiente declaración de problema en MYSQL:
tengo una fecha de inicio y una fecha de finalización. Necesito calcular la cantidad de días entre la fecha de inicio y la fecha de finalización para el mes actual y hasta la fecha actual.
Ejemplo 1:
start_date = "2020-06-27" end_date = "2020-09-27" Since today's date is 2020-08-11 (11th Aug 2020). I need 11 as the output.Ejemplo2:
start_date = "2020-08-08" end_date = "2020-08-09" I need 2 as the output.Ejemplo3:
start_date = "2020-08-08" end_date = "2020-08-14" I need 4 as the output because current date is 11th Aug.Lo he intentado, dateiff, period_diff pero aún no he tenido éxito. Por favor, buscando ayuda aquí.
Gracias por mirar la declaración del problema.
creo que es esto:
SELECT DATEDIFF( LEAST(DATE_FORMAT(NOW(),"%Y-%m-%d"),"2020-08-14"), GREATEST("2020-08-08",DATE_FORMAT(NOW(),"%Y-%m-01")) )+1;La respuesta a tu segunda pregunta debe ser 2, supongo.
Puede usar las funciones de fecha de MySql con el mínimo () y el mayor () para ajustar los límites:
select datediff( least(end_date, current_date), greatest(start_date, last_day(current_date - interval 1 month) + interval 1 day) ) + 1 difference from tablename Ver la demostración .
Resultados:
| difference | | ---------- | | 11 | | 2 | | 4 |Puede probar la función MONTH de MySQL con una combinación de DATEDIFF , algo así como
select case WHEN (MONTH(startDate)!==MONTH(CURDATE()) && MONTH(endDate)!==MONTH(CURDATE())) THEN DATEDIFF(STR_TO_DATE(ADD_START_DATE_OF_MONTH,'%d,%m,%Y'),CURDATE()) AS days WHEN MONTH(startDate)!==MONTH(CURDATE()) THEN DATEDIFF(CURDATE(),STR_TO_DATE(endDate, '%m/%d/%Y')) AS days WHEN MONTH(endDate)!==MONTH(CURDATE()) THEN DATEDIFF(STR_TO_DATE(startDate, '%m/%d/%Y'), CURDATE()) AS days ELSE DATEDIFF(STR_TO_DATE(startDate, '%m/%d/%Y'), STR_TO_DATE(endDate, '%m/%d/%Y')) AS days