mysql

Siguiendo con los codigos, ahora voy a dejar un ejemplo de como restar fechas de un atabla MySQL que tengan formato UNIX TIME.

Las funciones que utilizaremos seran: UNIX_TIMESTAMP(), NOW(), FROM_UNIXTIME() y TO_DAYS()

Primeramente crearemos una tabla que contendra las fechas en formato UNIX.

CREATE TABLE `registro` (
`id` int(11) NOT NULL auto_increment,
`fecha_desde` int(11) NOT NULL,
`fecha_hasta` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Luego ingresaremos un par de registros con los datos necesarios para luego hacer la resta entre las fechas.

insert into `registro`(fecha_desde,fecha_hasta) values (UNIX_TIMESTAMP(NOW()), UNIX_TIMESTAMP(NOW()));
insert into `registro`(fecha_desde,fecha_hasta) values (UNIX_TIMESTAMP(‘2008-01-01 13:13:00’), UNIX_TIMESTAMP(‘2008-03-01 09:45:23’))

Aqui vemo que para los campos fecha_desde y fecha_hasta, en el primer registro usaremos la fecha actual NOW() que sera convertida por la funcion UNIX_TIMESTAMP() al formato numerico.

En el segundo registro ingresaremos 2 fechas escritas a mano para variar los datos que restaremos.

Con la sgte. consulta SQL haremos la resta final entra las fechas de la tabla “registro”.

SELECT id,FROM_UNIXTIME( fecha_desde ) desde, FROM_UNIXTIME( fecha_hasta ) hasta,
TO_DAYS(FROM_UNIXTIME( fecha_hasta )) – TO_DAYS(FROM_UNIXTIME( fecha_desde )) as dias
FROM `registro`
WHERE 1

Para este caso, mostramos las fechas en formato normal (yyyy-mm-dd) y luego hacemos la resta en DIAS. Primero convertimos a dias las dos fechas y restamos aritmeticamente

El resultado es el sgte:

+--------+---------------------+-----------------------+------+
| id     | desde               | hasta                 | dias |
+--------+---------------------+-----------------------+------+
| 1      | 2008-06-25 11:21:20 | 2008-06-25 11:21:20   |    0 |
| 2      | 2008-01-01 13:13:00 | 2008-03-01 09:45:23   |   60 |
+--------+---------------------+-----------------------+------+