Casualmente hoy, me ha dado un error que he logrado solucionar, lo comento por si les pasa ya tengan la solución.
Primero, hacerles un breve resumen de la situación:
Como todos saben MYSQL almacena lor registros de tipo DATE en formato "YYYY-MM-DD" (Año-Mes-Dia), por ejemplo, (2012-04-10): Fechas ISO 8601.
Imaginemos que queremos realizar una consulta para extraer de la tabla "tusuario" la fecha de nacimiento de todos los usuarios de la tabla:
SELECT tusuario.fechaNacimiento FROM tusuario.
Si esta consulta la escribimos dentro de un fichero PHP:
require_once(conexionBD.php"); //para llamar al archivo que ejecuta la conexión a la BD.En pantalla se mostrará la fecha en formato "YYYY-MM-DD"; ahora bien, si el usuario final desea que le fecha se muestre en formato "DD/MM/YYYY" en muchos sitios se recomienda utilizar la siguiente función
$sql="SELECT tusuario.fechaNacimiento FROM tusuario";
$consulta=mysql_query($sql, $conexion) or die (mysql_error()); //crea conexión
if(mysql_num_rows($consulta)>0){
while($fila=mysql_fetch_array($consulta)){
echo $fila[fechaNacimiento];
}
}
echo (date(("d/m/Y"),strtotime( $fila[fechaNacimiento])));VER: strtotime
Sin embargo, cuando utilicé dicha función, me devolvía la fecha "01/01/1970" para todos los casos, por tanto comencé a buscar opciones e hice lo siguiente:
list($anno, $mes, $dia) = explode('-', $fila[fechaProximaLlamada]);Y de esa forma salieron las fechas con el formato adecuado.
echo "$dia/$mes/$anno";
Por el contrario, si queremos almacenar la fecha en nuestra BD y se ecnuentra en formato DD/MM/YYYY lo que tenemos que hacer para cambiarla es lo siguiente:
$fechaNacimiento=$_GET["fechaNacimiento"]; //En caso de que se reciba por GET o por POST
$partes=explode("/", $fechaNacimiento);
$fecha=$partes[2]."-".$partes[1]."-".$partes[0]; //para que la fecha se guarde en la BD como YYYY-MM-DD
No hay comentarios:
Publicar un comentario