Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Formatear Fecha

Estas en el tema de Formatear Fecha en el foro de Mysql en Foros del Web. Hola, No soy programador en la verdad busco aprender solo algo sobre PHP y MySQL. Por eso pido paciencia se no soy muy claro. Tengo ...
  #1 (permalink)  
Antiguo 13/05/2010, 16:30
 
Fecha de Ingreso: marzo-2010
Ubicación: Leganés - Madrid
Mensajes: 9
Antigüedad: 14 años, 1 mes
Puntos: 0
Formatear Fecha

Hola,
No soy programador en la verdad busco aprender solo algo sobre PHP y MySQL. Por eso pido paciencia se no soy muy claro.

Tengo en mi Banco de datos en una tabla un campo con que guarda a fecha actual y quiero convertirla para el padrón español.

Aquí sigue os datos:
tabla: eurohoy
campo: fecha (tipo: timestamp / Atributos: on update CURRENT_TIMESTAMP / Predeterminado: CURRENT_TIMESTAMP / Extra: on update CURRENT_TIMESTAMP)

Código PHP:
$link mysql_connect("xxxxxx""xxxxx""*****");

mysql_select_db("bdunic"$link);

$result mysql_query("SELECT * FROM `eurohoy` ORDER BY `fecha` DESC LIMIT 1"$link);

if (
$row mysql_fetch_array($result)){

echo 
"<table border = '1'> \n";

echo 
"<tr> \n";

echo 
"<td><b>Euro Hoy</b></td> \n";

echo 
"<td><b>Ultima Actualización</b></td> \n";

echo 
"</tr> \n";

do {

echo 
"<tr> \n";

echo 
"<td>".$row["euro"]."</td> \n";

echo 
"<td>".$row["fecha"]."</td>\n";

echo 
"</tr> \n";

} while (
$row mysql_fetch_array($result));

echo 
"</table> \n";

} else {

echo 
"¡ La base de datos está vacía !";

}

?> 
El resultado que me enseña es:

Euro Hoy | Ultima Actualización
3.33 | 2010-05-11 08:37:17

Quiero que el formato da fecha sea: dd-mm-aaaa hh:mm:ss

La verdad es que busqué y encontré muchas y variadas orientaciones y eso me dejo muy confuso. Si alguien me pudiera ayudar agradezco.
Gracias!
  #2 (permalink)  
Antiguo 13/05/2010, 18:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Formatear Fecha

Cita:
Quiero que el formato da fecha sea: dd-mm-aaaa hh:mm:ss
O lo controlas en el PHP (tema del foro de PHP), o bien usas la función DATE_FORMAT(fecha, patrón)
Esta última, en tu caso sería:
Código MySQL:
Ver original
  1. SELECT DATE_FORMAT(campofecha, '%d-%m-%Y %T') fecha;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 15/05/2010, 03:56
 
Fecha de Ingreso: marzo-2010
Ubicación: Leganés - Madrid
Mensajes: 9
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Formatear Fecha

Cita:
Iniciado por gnzsoloyo Ver Mensaje
O lo controlas en el PHP (tema del foro de PHP), o bien usas la función DATE_FORMAT(fecha, patrón)
Esta última, en tu caso sería:
Código MySQL:
Ver original
  1. SELECT DATE_FORMAT(campofecha, '%d-%m-%Y %T') fecha;
Hola gnzsoloyo,

Gracias pela orientación.
Aun sigo un poco perdido. El select que tengo en mi código busca el ultimo registro guardado y preséntalo. Usando la ultima fecha como referencia.

mi select esta asi:
Código PHP:
$result mysql_query("SELECT * FROM `eurohoy` ORDER BY `fecha` DESC LIMIT 1"$link); 
Tu me has indicado asi:
Código PHP:
SELECT DATE_FORMAT(campofecha'%d-%m-%Y %T'fecha
La pregunta es:: Como consigo hacer el casamiento de los 2 ? Quiero que presente el ultimo registro usando como referencia la ultima fecha.
Abrazos!
  #4 (permalink)  
Antiguo 15/05/2010, 04:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Formatear Fecha

Es fácil, pero tienes que poner en lugar del asterisco los nombres de los otros campos de la tabla eurohoy que necesites mostrar, excepto fecha.
SELECT campo1, campo2, campo3, DATE_FORMAT(fecha, '%d-%m-%Y %T') fecha FROM `eurohoy` ORDER BY `fecha` DESC LIMIT 1
  #5 (permalink)  
Antiguo 15/05/2010, 04:43
 
Fecha de Ingreso: marzo-2010
Ubicación: Leganés - Madrid
Mensajes: 9
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Formatear Fecha

Cita:
Iniciado por jurena Ver Mensaje
Es fácil, pero tienes que poner en lugar del asterisco los nombres de los otros campos de la tabla eurohoy que necesites mostrar, excepto fecha.
SELECT campo1, campo2, campo3, DATE_FORMAT(fecha, '%d-%m-%Y %T') fecha FROM `eurohoy` ORDER BY `fecha` DESC LIMIT 1
Hola,

He seguido la orientación y creo que no he hecho algo bien.
Porque ahora recibo la mensaje "La base de datos esta hacia".
Mira como he puesto:
Código PHP:
$result mysql_query("SELECT euro DATE_FORMAT(fecha, '%d-%m-%Y %T') fecha FROM `eurohoy` ORDER BY `fecha` DESC LIMIT 1"$link); 
Gracias!
Aguardo.
  #6 (permalink)  
Antiguo 15/05/2010, 05:00
 
Fecha de Ingreso: marzo-2010
Ubicación: Leganés - Madrid
Mensajes: 9
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Formatear Fecha

He hecho una alteración que ahora enseña la tabla de resultado. Pero enseña solamente el campo "euro" y la fecha salí en Blanco.
mira:
$result = mysql_query("SELECT euro, DATE_FORMAT(fecha, '%d-%m-%Y %T') FROM `eurohoy` ORDER BY `fecha` DESC LIMIT 1", $link);
  #7 (permalink)  
Antiguo 15/05/2010, 05:07
 
Fecha de Ingreso: marzo-2010
Ubicación: Leganés - Madrid
Mensajes: 9
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Formatear Fecha

Cita:
Iniciado por gscampos Ver Mensaje
Hola,

He seguido la orientación y creo que no he hecho algo bien.
Porque ahora recibo la mensaje "La base de datos esta hacia".
Mira como he puesto:
Código PHP:
$result mysql_query("SELECT euro DATE_FORMAT(fecha, '%d-%m-%Y %T') fecha FROM `eurohoy` ORDER BY `fecha` DESC LIMIT 1"$link); 
Gracias!
Aguardo.
He hecho un cambio y ahora me enseña algo...pero el campo Fecha sali en Blanco.
Mira como he puesto:
Código PHP:
$result mysql_query("SELECT euro, DATE_FORMAT(fecha, '%d-%m-%Y %T') FROM `eurohoy` ORDER BY `fecha` DESC LIMIT 1"$link); 
Aguardo.
  #8 (permalink)  
Antiguo 15/05/2010, 06:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Formatear Fecha

Para que esto funcione:
Código MySQL:
Ver original
  1.     euro,
  2.     DATE_FORMAT(fecha, '%d-%m-%Y %T')
  3. FROM `eurohoy`
  4. ORDER BY `fecha` DESC
1) El campo `fecha` debe existir en la tabla `eurohoy`.
2) Debe ser de tipo DATETIME , es decir debe forzosamente guardar la información como "aaaa-MM-dd HH:mm:ss".
3) Debe contener datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 15/05/2010, 07:27
 
Fecha de Ingreso: marzo-2010
Ubicación: Leganés - Madrid
Mensajes: 9
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Formatear Fecha

Arreglé el código como indicó arriba. Pero aun no esta bien.
En el banco de datos MySQL el campo "fecha" tiene las siguientes características:

---------------------------------
campo: fecha
tipo: TIMESTAMP
predeterminado: CURRENT_TIMESTAMP
atributos: on update CURRENT_TIMESTAMP
---------------------------------

Tengo que coger la hora del ingreso del dado, por eso he elegido esta forma.
Intenté usar el tipo DATETIME pero cuando voy poner los atributos (predeterminado: CURRENT_TIMESTAMP / atributos: on update CURRENT_TIMESTAMP) el MySQL enseña el error:
--------------------
Error
consulta SQL:
ALTER TABLE `eurohoy` CHANGE `fecha` `fecha` DATETIME ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
MySQL ha dicho:
#1067 - Invalid default value for 'fecha'
--------------------
Hay como usar el DATETIME y coger la hora actual?
Aguardo.
  #10 (permalink)  
Antiguo 15/05/2010, 08:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Formatear Fecha

El error está en esto: Se trata de propiedades exclusivamente de las columnas TIMESTAMP y que no se pueden aplicar a los DATETIME (ver 11.3.1. Los tipos de datos DATETIME, DATE y TIMESTAMP).
El tema es que un TIMESTAMP de definitiva, actúa en tu contexto como sinónimo de DATETIME (de hecho, CURRENT_TIMESTAMP () y CURRENT_TIMESTAMP() son sinónimos de NOW(), que devuelve un DATETIME).
Para el caso, si el tipo de columna es un TIMESTAMP, la sintaxis que te pasé debería funcionar, ya que:
Código MySQL:
Ver original
  1. SELECT DATE_FORMAT('20100515104952', '%d-%m-%Y %T') DIA;
  2. +---------------------+
  3. | DIA                 |
  4. +---------------------+
  5. | 15-05-2010 10:49:52 |
  6. +---------------------+
  7. 1 row in set (0.00 sec)
Y además:
Código MySQL:
Ver original
  1. SELECT DATE_FORMAT('2010-05-15 10:49:52', '%d-%m-%Y %T') DIA;
  2. +---------------------+
  3. | DIA                 |
  4. +---------------------+
  5. | 15-05-2010 10:49:52 |
  6. +---------------------+
  7. 1 row in set (0.00 sec)
Como podrás ver, es el mismo resultado en ambos casos.

En resumen: Si la tabla contiene datos, y la consulta respeta la sintaxis, debería estar devolviendo correctamente los datos.
Revisa el contenido de la tabla al ejecutar la sentencia de esta forma:
Código MySQL:
Ver original
  1.     euro,
  2.     DATE_FORMAT(fecha, '%d-%m-%Y %T')  fecha
  3. FROM `eurohoy`
  4. ORDER BY `fecha` DESC
En este ejemplo te estoy poniendo "fecha" como alias de la función, para que no haya problemas al leer la columna.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 15/05/2010, 10:01
 
Fecha de Ingreso: marzo-2010
Ubicación: Leganés - Madrid
Mensajes: 9
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Formatear Fecha

Cita:
Iniciado por gnzsoloyo Ver Mensaje
El error está en esto: Se trata de propiedades exclusivamente de las columnas TIMESTAMP y que no se pueden aplicar a los DATETIME (ver [URL="http://dev.mysql.com/doc/refman/5.0/es/timestamp-4-1.html"]11.3.1. Los tipos de datos DATETIME, DATE y TIMESTAMP[/URL]).
El tema es que un TIMESTAMP de definitiva, actúa en tu contexto como sinónimo de DATETIME (de hecho, CURRENT_TIMESTAMP () y CURRENT_TIMESTAMP() son sinónimos de NOW(), que devuelve un DATETIME).
Para el caso, si el tipo de columna es un TIMESTAMP, la sintaxis que te pasé debería funcionar, ya que:
Código MySQL:
Ver original
  1. SELECT DATE_FORMAT('20100515104952', '%d-%m-%Y %T') DIA;
  2. +---------------------+
  3. | DIA                 |
  4. +---------------------+
  5. | 15-05-2010 10:49:52 |
  6. +---------------------+
  7. 1 row in set (0.00 sec)
Y además:
Código MySQL:
Ver original
  1. SELECT DATE_FORMAT('2010-05-15 10:49:52', '%d-%m-%Y %T') DIA;
  2. +---------------------+
  3. | DIA                 |
  4. +---------------------+
  5. | 15-05-2010 10:49:52 |
  6. +---------------------+
  7. 1 row in set (0.00 sec)
Como podrás ver, es el mismo resultado en ambos casos.

En resumen: Si la tabla contiene datos, y la consulta respeta la sintaxis, debería estar devolviendo correctamente los datos.
Revisa el contenido de la tabla al ejecutar la sentencia de esta forma:
Código MySQL:
Ver original
  1.     euro,
  2.     DATE_FORMAT(fecha, '%d-%m-%Y %T')  fecha
  3. FROM `eurohoy`
  4. ORDER BY `fecha` DESC
En este ejemplo te estoy poniendo "fecha" como alias de la función, para que no haya problemas al leer la columna.

Ufa..... bingooo.
Seguí tu orientación y salió todo muy bien.
Gracias pela paciencia y ayuda de todos.
Abrazos.
  #12 (permalink)  
Antiguo 15/05/2010, 10:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Formatear Fecha

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 15/05/2010, 10:15
 
Fecha de Ingreso: marzo-2010
Ubicación: Leganés - Madrid
Mensajes: 9
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Formatear Fecha

Soy novato en el foro y esta fue mi primera participación.
Tengo que indicar que fue resuelto el problema que presenté?
Gracias!
  #14 (permalink)  
Antiguo 15/05/2010, 10:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Formatear Fecha

Es de buenas maneras mostrar cómo quedó la solución. Eso ayuda a los otros a aprender de lo que has logrado.
Incluso no falta la ocasión en que alguno propone otra alternativa distinta.

Así se aprende en el foro.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 15/05/2010, 10:45
 
Fecha de Ingreso: marzo-2010
Ubicación: Leganés - Madrid
Mensajes: 9
Antigüedad: 14 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Formatear Fecha

[SOLUCIONADO]

El problema presentado: Formatear un campo de MySQL del formato yyyy:mm:dd hh:mm:ss para el formato dd:mm:yyyy hh:mm:ss
El campo de nombre llamada fecha tiene las siguientes características:
(tipo: timestamp / Atributos: on update CURRENT_TIMESTAMP / Predeterminado: CURRENT_TIMESTAMP / Extra: on update CURRENT_TIMESTAMP).

Al principio usaba este comando:
Código PHP:
$result mysql_query("SELECT * FROM `eurohoy` ORDER BY `fecha` DESC LIMIT 1"$link); 
La mejor solución indicada por el foro fue:
Código PHP:
$result mysql_query("SELECT euro, DATE_FORMAT(fecha, '%d-%m-%Y %T') fecha FROM `eurohoy` ORDER BY `fecha` DESC LIMIT 1"$link); 
Así tengo la fecha con el formato convencional usado aquí en España.

Etiquetas: formatear, fechas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:12.