29 de mayo de 2011

Cambiar el formato de la Fecha de MySQL


Los tipos de fecha y hora en MySQL son DATETIME, DATE, TIMESTAMP, TIME, y YEAR. Cada uno de estos tipos tiene un rango de valores.

MySQL da advertencias de error si se intenta insertar una fecha que no respete el formato de fecha que tiene MySQL, como es por ejemplo '2011-11-31'. Y cuando el usuario por ejemplo, en un formulario web inserta la fecha con el formato: día - mes-año en la base de datos se producirá un error y MySQL no insertará la fecha en la base de datos. MySQL sólo permite almacenar fechas con el formato 'año-mes-día' .

Algunas consideraciones que se han de tener en cuenta a la hora de trabajar con tipos de fecha y hora en MySQL:

MySQL muestra los valores para una fecha o hora en un formato de salida estándar.

Las fechas con años de dos dígitos son ambiguas, ya que no se sabe el siglo. MySQL interpreta los años de dos dígitos usando las siguientes reglas:
Los años del rango 70-99 se convierten en 1970-1999.
Los años del rango 00-69 se convierten en 2000-2069.
Las fechas siempre deben darse en el orden año-mes-día (por ejemplo, '98-09-04').

MySQL convierte automáticamente una fecha o hora a un número si el valor se usa en un contexto numérico y viceversa, es decir, podemos hacer operaciones con las fechas.

Teniendo en cuenta estas cuestiones a la hora de mostrar la fecha de una base de datos con el formato de día-mes-año, tendremos que usar la función explode() de PHP. Por ejemplo:

Una vez que hayamos estriado los registros de una base de datos mediante una consulta, queremos convertir la variable $fecha, en un formato más legible para los usuarios, ya que las fechas en las base de datos se guardan en formato americano (año-mes-día), haremos lo siguiente

$fecha=$registro['fecha'];
$fecha_m = explode("-", $fecha);
$dia_m =$fecha_m[2];
$mes_m =$fecha_m[1];
$anio_m=$fecha_m[0];
$fecha_final= $dia_m.'-'.$mes_m.'-'.$anio_m;

Vamos a explicar un poco lo que hemos hecho o que hace la función explode() de PHP lo que hacemos es convertir la fecha en una matriz y usamos el guión “-” para indicar a la función donde comienza cada campo de la matriz, como se hace en el ejemplo: $fecha_m = explode("-", $fecha); teniendo en cuenta que el primer campo de la matriz es el año, el segundo el mes y el tercero es el día, pero recuerda que el valor de inicio del indice de una matriz es 0.

Una vez que tenemos la matriz creamos tres variables que contienen el valor de cada campo de la matriz como muestra el ejemplo:

$dia_m =$fecha_m[2];
$mes_m =$fecha_m[1];
$anio_m=$fecha_m[0];

Y finalmente concatenamos las tres variables que contiene los valores de la matriz en el orden y el separador que deseemos, en este caso:

$fecha_final= $dia_m.'-'.$mes_m.'-'.$anio_m;

Espero que os sea de ayuda a todos un saludo:

Antonio

6 comentarios:

  1. UFff buena brother la verdad felicitaciones :D gracias me has ayudado u,u

    ResponderEliminar
  2. Gracias por el comentario.... La idea principal de este Blog es para que sirva de ayuda a tod@s...

    Un saludo

    ResponderEliminar
  3. Gracias maestro, me has sacado de un gran apuro, pues estaba utilizando ereg y preg_match, y me da errores dependiendo de la versión de php en el servidor, con este código va perfecto, y lo mas importante, es mucho mas sencillo que el otro. Gracias por compartir tus conocimientos.

    ResponderEliminar
  4. La función de php preg_match(), se usa para validar expresiones regulares.

    Esta función es muy útil para validar mediante expresiones regulares los parámetros que se envíen por método GET, y de esta función es muy útil para securizar nuestras aplicaciones Web.

    De esta forma evitaremos ISQL y XSS.

    La función ereg() ha sido declarada obsoleta en PHP 5.3.0. Su uso está totalmente desaconsejado.

    Gracias por colaborar y comentar:

    Un saludo desde España a tod@s

    ResponderEliminar
  5. Muy bueno y simple, Very thanks BRO!! ;)

    ResponderEliminar

No olvides dejar tu comentario y gracias por tu tiempo ;-)