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.
martes, 5 de abril de 2011
[PHP] Truncar un decimal a N digitos sin redondear
Hace algún tiempo se me presentó un inconveniente a la hora de querer cortar unos resultados, pero la condición es que no se debía redondear, así que la función de php "number_format", no era la mas apropiada.
Aquí les dejo la solución final.
Aquí les dejo la solución final.
/** * funcion para convertir un numero a decimal con X digitos * @param String $number * @param Int $digitos cantidad de digitos a mostrar * @return Float */ function truncateFloat($number, $digitos) { $raiz = 10; $multiplicador = pow ($raiz,$digitos); $resultado = ((int)($number * $multiplicador)) / $multiplicador; return number_format($resultado, $digitos); }
EJEMPLO:
truncateFloat('10.138',2); Resultado: 10.13
domingo, 3 de abril de 2011
[Linux]Tarea programada para hacer backup de base de datos en Postgres
creamos un archivo llamado backup.sh
[Codeigniter] Jqgrid CRUD 1.1
Hace mucho publiqué en le foro de codeigniter una funcionalidad que para nosostros como desarrolladores, nos agiliza bastante el desarrollo de una aplicacion, ya que por lo general la creacion de edicion, creacion, eliminacion quita bastante tiempo.
Para esto cree esta libreria, usando jqgrid como base y Codeigniter como backend.
Haga click aqui para ver la descripción del componente,
Para descargarlo, haga click aqui
Ver demo AQUI
Para esto cree esta libreria, usando jqgrid como base y Codeigniter como backend.
Haga click aqui para ver la descripción del componente,
Para descargarlo, haga click aqui
Ver demo AQUI
[Linux]Borrar y crear cola de correo de qmail
Hace poco tuve una amarga experiencia que estaba usando mi servidor, como spam de correo, al ver la cola me di cuenta que tenia mas de 10 mil correos encolados.
Lo primero que hice fué detener el servidor de correo, debido a la gran cantidad de correos, esto no lo podia borrar desde el plesk, asi que despues de mucho buscar encontré este script que me sirvió de mucho.
Para saber cuantos archivos tenemos en la cola, ejecutamos por consola el siguiente comando.
/usr/local/psa/admin/bin/mailqueuemng -s
Ahora detenemos el servicio
/etc/init.d/qmail stop
Nos movemos a la carpeta de qmail
cd /var/qmail/queue
Ahora borramos la cola
rm -rf info intd local mess remote todo
Creamos las careptas de nuevo
mkdir mess
for i in `seq 0 22`; do
mkdir mess/$i
done
cp -r mess info
cp -r mess intd
cp -r mess local
cp -r mess remote
cp -r mess todo
chmod -R 750 mess todo
chown -R qmailq:qmail mess todo
chmod -R 700 info intd local remote
chown -R qmailq:qmail intd
chown -R qmails:qmail info local remote
/etc/init.d/qmail start
Lo primero que hice fué detener el servidor de correo, debido a la gran cantidad de correos, esto no lo podia borrar desde el plesk, asi que despues de mucho buscar encontré este script que me sirvió de mucho.
Para saber cuantos archivos tenemos en la cola, ejecutamos por consola el siguiente comando.
/usr/local/psa/admin/bin/mailqueuemng -s
Ahora detenemos el servicio
/etc/init.d/qmail stop
Nos movemos a la carpeta de qmail
cd /var/qmail/queue
Ahora borramos la cola
rm -rf info intd local mess remote todo
Creamos las careptas de nuevo
mkdir mess
for i in `seq 0 22`; do
mkdir mess/$i
done
cp -r mess info
cp -r mess intd
cp -r mess local
cp -r mess remote
cp -r mess todo
chmod -R 750 mess todo
chown -R qmailq:qmail mess todo
chmod -R 700 info intd local remote
chown -R qmailq:qmail intd
chown -R qmails:qmail info local remote
/etc/init.d/qmail start
Suscribirse a:
Entradas (Atom)