Archivo de la categoría: MySQL

Fechas PHP a MySQL y vuelta – MySQL Tips

PHP Programming languageUna de las cosas con las que toca lidiar practicamente siempre que trabajamos con fechas contra una base de datos MySQL es que la base va MySQLa almacenar las fechas de la manera ISO “año-mes-dia” y nosotros a la hora de trabajar trabajos con el formato Europeo, ya sea “dia-mes-año” o “dia/mes/año”.

Durante muchos años trabajaba con la tecnica de la función bidireccional, es decir, me creaba una función la cual cuando le llegaba la fecha la convertia en un sentido u otro.

function cambiaFormatoFecha($fechaOriginal)
{
 //Dividimos la fecha de la hora si existe
 $partesStamp = explode(" ", $fechaOriginal);
 // La primera parte es la fecha, la segunda la hora
 $partesFecha = explode ( "-", $partesStamp[0] );
 // La fecha final
 return $partesFecha[2] ."-".$partesFecha[1]."-".$partesFecha[0];
}

MySQL guarda las fechas separadas por guiones, así que si nosotros definimos el formato de fecha separado con guiones, pues eso que tenemos ganado y esta función nos convierte tanto nuestras fechas cuando las introducimos como las fechas que devuelve el MySQL.

Trabajar con esto puede parecer que es una gran ventaja, pero la verdad que a nivel de rendimiento no lo es ya que supone ejecutar la función cada vez que aparezca un registro de fecha.

Una solución bastante mas eficiente es la de procesar las fechas en la consulta. Para eso utilizaremos las funciones incorporadas de MySQL DATE_FORMAT y STR_TO_DATE.

Si queremos unos registros de una determinada fecha podemos hacer:


SELECT * FROM `tabla` WHERE fecha LIKE STR_TO_DATE('mifecha','%d-%m-%Y);

En esta consulta mifecha esta en el formato dia-mes-año

Si queremos ver las fechas en el formato dia-mes-año


SELECT DATE_FORMAT(fecha,'%d-%m-%Y) FROM `tabla`;

Para mas información

STR_TO_DATE http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_str-to-date

DATE_FORMAT http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date-format

AutoMySQLBackup – Copias Automaticas de nuestras bases de datos

Todos nos acordamos de las copias de seguridad o bien cuando no la hemos hecho, y sobre todo cuando el problema es grande. Una manera de automatizar las copias de nuestras bases de datos es por medio de este script el cual es muy fácil de configurar y muy fácil de instalar, y seguro que de alguna nos salvara.

Si tenemos un sistema basado en debian ( como ubuntu )  con el apt-get install se nos bajara y se nos instalara en el sistema.


sudo apt-get install automysqlbackup

Una vez instalado vamos a configurar los 4 parámetros básicos para que funcione en el fichero automysqlbackup que generalmente esta en /etc/default


USERNAME=myUser #Usuario con permisos en la base de datos

PASSWORD=myPass #Contraseña del usuario

DBHOST=localhost #En la mayoría de los casos estará en localhost

DBNAMES="myDb" #Esto si queremos una en particular si son mas bases las ponemos separadas por coma

Ahora ya solo queda añadir la tarea al crontab y ya estarán programadas las copias de seguridad


crontab -e

Con esto abrimos la edición de la crontab


# m h    dom  mon  dow         command

0 0      *         *        *              automysqlbackup > /dev/null 2>&1

La parte del /dev/null 2 >&1 la pongo por si se producen errores en el comando estos no salgan por pantalla.

+Info: AutoMySQLBackup | Free software downloads at SourceForge.net.

vía AutoMySQLBackup | Free software downloads at SourceForge.net.