Convertir fecha en MS Excel a integer MySQL o Unix timestamp. Convertir datos en diferentes formatos y plataformas de datos puede resultar complicado si no conocemos la manera de hacerlo fácilmente, y sobre todo rápidamente.
Un caso concreto me sucedió con unos datos de encuestas que las tenía almacenada en MS Excel, en la que incluía algunos campos en que se almacenan datos de fecha con el formato de día, mes y año (dd/mm/yyyy), por ejemplo: 26/08/2010.
Todos los datos debían migrarse o trasladarlos a una base datos en MySQL y me encontré con un problema. Al importar los datos, los datos no se importaban y me daban error y no se cargaban los datos.
Revisando el código de error, se indicaba que los campos donde debían almacenarse las fechas eran del tipo integer o int, es decir de tipo número entero con o sin signo.
Es decir, que los datos de fecha, no se guardaban en el formato en que los tenía almacenados (dd/mm/yyyy), sino que se debían guardar en formato numérico.
En concreto, convertir por ejemplo la fecha 26/08/2010 almacenado en MS Excel a 1282780800 en integer o int de MySQL o también como Unix timestamp.
En la tabla de abajo, podemos ver como se muestran los datos de fecha. En la columna A se pueden ver los datos de Excel en el formato de (dd/mm/yyyy), y en la columna B se muestran esas mismas fechas en formato numérico, como los guarda en el formato integer o int de MySQL o Unix timestamp.
A | B | |
1 | fecha Excel | Fecha int |
2 | 26/08/2010 | 1282780800 |
3 | 24/02/2007 | 1172275200 |
4 | 29/01/2007 | 1170028800 |
5 | 01/12/2007 | 1196467200 |
La fórmula que utilizaremos para convertir de fecha en formato (dd/mm/yyyy) a formato integer o int de MySQL o Unix timestamp es la siguiente:
=(A2-FECHA (1970;1;1)) *86400
En dónde:
A2 está la fecha en formato (dd/mm/yyyy), tener en cuenta que, en los subsiguientes casos, el inicio de la fórmula sería A3, A4, A5 y así sucesivamente.
Lo restamos con la función fecha de MS Excel. Dicha función necesita 3 datos, año, mes y día. Para nuestros fines los datos son: 1970; 1; 1. Tener en cuenta que la separación es con “punto y coma” (;). Y finalmente, lo multiplicamos por 86400.
El resultado es para nuestro primer ejemplo: 1282780800 si está en formato general. Si por algún motivo, ve como resultado esto: ################### al infinito, quiere decir que el formato de la celda está en fecha; por lo que, lo único que debe hacer es cambiar el formato de la celda a general.
Con esto ya tenemos los datos de fecha en formato (dd/mm/yyyy) de MS Excel al formato integer o int de MySQL o Unix timestamp.