CREATE FUNCTION `CalculoAnoMesDias`( fecha_ini datetime, fecha_fin datetime ) RETURNS char(128) CHARSET utf8 BEGIN /** resta de fechas y devuelve anio, mes, dia formato de ingreso yyyy-m-d SELECT CalculoAnoMesDias( '2011-1-05',now() ); */ DECLARE yy,mm,d0,dd BIGINT; SET yy = TIMESTAMPDIFF(YEAR,fecha_ini,fecha_fin); -- anios SET mm = TIMESTAMPDIFF(MONTH,fecha_ini,fecha_fin) MOD 12; -- meses SET d0 = TIMESTAMPDIFF(DAY,fecha_ini,fecha_fin); -- dias -- calcular los dias IF yy > 0 || mm > 0 THEN IF (day(fecha_fin) >= day(fecha_ini)) THEN SET dd = TIMESTAMPDIFF(DAY,fecha_ini,fecha_fin) - TIMESTAMPDIFF(DAY,fecha_ini,CONCAT(YEAR(fecha_fin),'-',MONTH(fecha_fin),'-',day(fecha_ini))); ELSE SET dd = TIMESTAMPDIFF(DAY,fecha_ini,fecha_fin) - TIMESTAMPDIFF(DAY,fecha_ini,CONCAT(YEAR(DATE_SUB(fecha_fin,INTERVAL 1 MONTH)),'-',MONTH(DATE_SUB(fecha_fin,INTERVAL 1 MONTH)),'-',day(fecha_ini))); END IF; ELSE SET dd = d0; END IF; RETURN CONCAT( yy, ' año(s) ,', mm, ' meses ,', dd, ' dias '); END;
miércoles, 6 de abril de 2011
[MySQL] Restar fechas con resultado en anios, meses y dias
Les comparto una función que realmente es importante para el calculo de fechas en Mysql.
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario