Foros del Web » Programando para Internet » PHP »

Fechas en MySQL

Estas en el tema de Fechas en MySQL en el foro de PHP en Foros del Web. Hola: existe alguna forma de guardar en MySQL meiante PHP las fechas con el formato d/m/Y Saludos....
  #1 (permalink)  
Antiguo 22/01/2005, 09:06
Avatar de Chichoauza  
Fecha de Ingreso: enero-2005
Mensajes: 106
Antigüedad: 12 años, 11 meses
Puntos: 0
Fechas en MySQL

Hola:
existe alguna forma de guardar en MySQL meiante PHP las fechas con el formato d/m/Y

Saludos.
  #2 (permalink)  
Antiguo 22/01/2005, 11:48
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Pues podes hacerlo así

Pues puedes hacerlo de esta forma:
Código PHP:
 $dia date("d");
 
$mes date("m");
 
$year date("Y"); // o date("y") si solo quieres las dos ultimas cifras
 
$fecha $dia."/".$mes."/.".$year;
 
$query "INSERT INTO table(fecha) VALUES('".$fecha."')"
Salu2
__________________
Ing. Reynier Pérez Mira
  #3 (permalink)  
Antiguo 22/01/2005, 12:12
Avatar de baklao  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Ana - Isla de Margarita
Mensajes: 482
Antigüedad: 13 años
Puntos: 0
Cita:
Iniciado por Reynier
Pues puedes hacerlo de esta forma:
Código PHP:
 $dia date("d");
 
$mes date("m");
 
$year date("Y"); // o date("y") si solo quieres las dos ultimas cifras
 
$fecha $dia."/".$mes."/.".$year;
 
$query "INSERT INTO table(fecha) VALUES('".$fecha."')"
Salu2
Hola Reynier ante que todo un cordial saludo, te cuento yo he usado lo que dices para insertar la fecha en una tabla en mysql y pues no resulta o mejor dicho no la ingres aya que mysql trabaja la fecha año/mes/dia si mal no recuerdo y por esta manera no guarda nada en la tabla.

Para presentar en tu pagina dia/mes/año debe aplicar separar la fecha y luego acomodarla para mostrarla como quieres en tu pagina.

Suerte y Salu2.

Bye
__________________
Atte. Mohamed :aplauso:
  #4 (permalink)  
Antiguo 22/01/2005, 12:28
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 14 años
Puntos: 13
La solucion que entrega Reynier funciona si el camo 'fecha' es del tipo VARCHAR, si usa un campo del tipo DATE tienes que respetar el formato que permite MySQL:

yyyy-mm-dd o yyy:mm:dd

En ese caso lo que tienes que hacer es al momento de recojer la fecha desde la base de datos es descomponerla y rearmarla al formato que necesites.
__________________
El conocimiento es libre: Movimiento por la Devolución
  #5 (permalink)  
Antiguo 22/01/2005, 13:03
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Pues ...

Sip disculpen, debía haber comenzado por explicar lo del formato del campo de la tabla. La cosa es como dice frijolerou. Para usarlo de esa forma lo que podrías hacer es poner el campo de tu tabla de tipo VARCHAR. Ahora si lo tienes en formato DATE la consulta podrías hacerla de esta forma:
Código PHP:
 $query "INSERT INTO tabla(fecha) VALUES(CURDATE())"
si el campo es de tipo DATETIME entonces lo harías de esta forma:
Código PHP:
 $query "INSERT INTO tabla(fecha) VALUES(NOW())"
Salu2
__________________
Ing. Reynier Pérez Mira
  #6 (permalink)  
Antiguo 22/01/2005, 21:28
Avatar de Chichoauza  
Fecha de Ingreso: enero-2005
Mensajes: 106
Antigüedad: 12 años, 11 meses
Puntos: 0
Bien, muchas gracias a ambos, me fueron de gran ayuda...


saludos
  #7 (permalink)  
Antiguo 23/01/2005, 00:44
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... para no abrir un nuevo tema:
Ya he preguntado ésto en el foro de Base de datos pero no hay respuesta. Quiero poner por defecto en mi tabla la función NOW() en un campo tipo DATE... (para no tener que crear la query), según yo ya lo hice alguna vez... con phpMyAdmin, claro pero ahora no me resulta. Ahora veo que reiner pone dos casos distintons para lso campos tipo DATE y DATETIME... ¿no aplica la función NOW() para un campo tipo DATE???... CURDATE() guarda mi fecha del servidor?...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 23/01/2005, 08:38
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 14 años
Puntos: 13
Para DATE debes usar CURDATE() para que te de la fecha actual del servidor MySQL. Para DATETIME usas NOW(), que te da la fecha y la hora del servidor MySQL.

En tu campo de tipo DATE para dejar que coloque la fecha por defecto automaticamente, accede a ese campo desde phpmyadmin, y en la ocion "DEFAULT" coloca la funcion correspondiente, CURDATE(). Asi no necesitas insertarla desde el query.
__________________
El conocimiento es libre: Movimiento por la Devolución
  #9 (permalink)  
Antiguo 24/01/2005, 01:04
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
gracias pero...



como verás, después de efectuar "el cambio" y apesar de decirme que se logró... el campo fecha sigue dandome 0000-00-00 y no el CURDATE()... Por eso pregunto por la query correcta, quizá sea phpMyAdmin quien "este mal" (dos veces seguidas 'fecha'?? ). Por cierto utilizo la versión 2.6.1 rc2...

> > >> Para quienes no vean la imagen << < <
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 24/01/2005 a las 05:21 Razón: no me mostraba la imagen
  #10 (permalink)  
Antiguo 24/01/2005, 04:47
 
Fecha de Ingreso: enero-2005
Mensajes: 90
Antigüedad: 12 años, 10 meses
Puntos: 0
Hola amigos.
Yo hago todo lo que indicais en este post.. pero nada de nada.. no se me guarda automaticamente la fecha de ninguna manera..
¿que are mal?
tengo que cambiar algo o nose.. o es que no se guarda automaticamente y yo me pienso que si?
bueno si alguien es tan amable y tiene un poco de tiempo que lo vuelva a explicar de otra manera.
Muchas gracias
__________________
Usuario Novato, xD :pensando:
  #11 (permalink)  
Antiguo 24/01/2005, 05:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si no indicas que tipo de campos de "fecha" usas .. no podemos ver que sucede.

Si usas:
DATE -> para la fecha actual CURDATE()
DATETIME -> para la fecha actual NOW()

(esto ya lo había comentado Reynier . .fijate en sus ejemplos)

Luego será cosa de usar la función DATE_FORMAT() para dar el formato de salida que gusten a sus fechas.

Un saludo,
  #12 (permalink)  
Antiguo 24/01/2005, 06:27
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Saludos Cluster... No sé si me leiste, pero mi caso está claro... tengo un campo tipo DATE... quiero poner por default la función CURDATE()... (ya entendí eso)... Ve la imagen que adjunté en mi post anterior, muestra justo después de efectuar "el cambio", ve como campo fecha del tipo DATE sigue en 0000-00-00 (hasta arriba la consulta, hasta abajo el campo)... pensaba era un error de phpMyAdmin... pero buscando, allé esto:

ALTER TABLE [nombre_de_la_tabla] CHANGE [nombre_columna] [nombre_columna opciones_de _columna];

que se supone es la estructura de la query correcta pa' hacer este tipo de cambios.. comparandola con la que realiza phpMyAdmin... no le veo error...

Incluso ya he intentado crear nuevos campos de tipo DATE y DATETIME con sus respectivas CURDATE() y NOW() desde el inicio.. pero no se graban... ... ... pero lo grave es que también intenté meter la función CURDATE() desde PHP y tampoco me resultó!!!! ... problemas de instalación de MySQL???... no creo seguí tus intrucciones Cluster ... trabajo con la versión 1.4...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 24/01/2005 a las 06:32 Razón: errores de dedazo (hace frio > manos congeladas)
  #13 (permalink)  
Antiguo 24/01/2005, 06:43
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... solo por aclarar.. como dije, ya intenté utilizar la función CURDATE() desde PHP... sin responderme. No hay error en mi insersión de datos ya que si cambio 'CURDATE()' por algo tipo '2005-01-24' ésto último sí se guarda en mi BD... ya, solo eso

(... como que me estoy convensiendo que´es algún problema de configuración de MySQL )
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #14 (permalink)  
Antiguo 24/01/2005, 06:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. jam1138 que código usas concretamente?.

El campo en tu BD en tu tabla debes crearlo como DATE o DATETIME .. luego será en tus consultas SQL donde en los INSERT o UPDATE le des valor a ese campo con la fecha actual que es lo que obtienes con las funciones de Mysql: CURDATE() o NOW() según corresponda al tipo de campo que uses.

Pon el código completo que uses PHP para generar una sentencia "INSERT" o similar con esa fecha por defecto actual.

Un saludo,

PD: La imagen no la veo o no se vé ..
  #15 (permalink)  
Antiguo 24/01/2005, 06:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por jam1138
... solo por aclarar.. como dije, ya intenté utilizar la función CURDATE() desde PHP... sin responderme. No hay error en mi insersión de datos ya que si cambio 'CURDATE()' por algo tipo '2005-01-24' ésto último sí se guarda en mi BD... ya, solo eso

(... como que me estoy convensiendo que´es algún problema de configuración de MySQL )
CURDATE() .. o NOW() y funciones de Mysql en general NO VAN entre comillas en tus sentencias SQL (fijate en los ejemplos de Reynier). De todas formas . .eso lo veremos cuando pongas el código que usas.

Un saludo,
  #16 (permalink)  
Antiguo 24/01/2005, 06:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por Cluster
CURDATE() .. o NOW() y funciones de Mysql en general NO VAN entre comillas en tus sentencias SQL (fijate en los ejemplos de Reynier). De todas formas . .eso lo veremos cuando pongas el código que usas.

Un saludo,
.... ok, eran las comillas por lo que no se insertaban desde PHP... pero sigo sin poder ponerla como predeterminada... solo por experimentar probé esto:

ALTER TABLE `noticias` CHANGE `fecha` `fecha` DATE DEFAULT CURDATE() NOT NULL

(sin comillas) pero no resultó... ya, sé que lo de menos es poner la función desde PHP (ahora que ya ví que sirvió ) pero la pregunta sigue ahí... qué pasa que no puedo ponerla por Default? ...

Saludos... calurosos (aunque maldito frio el que tengo )
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #17 (permalink)  
Antiguo 24/01/2005, 07:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. esos detalles no son de PHP sino de SQL .. deberías preguntar en el foro de Base de datos por la sentencia SQL adecuada y si es posible asignar como valor por defecto una función (creo que no .. pero deberías consultarlo en dicho foro).

Lo "normal" es que en tus "INSERT" y demás funciones uses siempre CURDATE() o la función que correponda para darle su valor en ese instante ..

Un saludo,
  #18 (permalink)  
Antiguo 24/01/2005, 07:08
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
ya, me rindo por ahora. Gracias por la atención; preguntaré en aquel foro... Te diré que estoy casi seguro de que sí se puede asignar una función como valor por defecto, juraria que lo he visto (lo que me hace dudar es que tu digas que no ).

Hasta pronto
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #19 (permalink)  
Antiguo 24/01/2005, 08:13
Avatar de Chichoauza  
Fecha de Ingreso: enero-2005
Mensajes: 106
Antigüedad: 12 años, 11 meses
Puntos: 0
Exclamación Volviendo a la pregunta Original

Cita:
Iniciado por Chichoauza
Hola:
existe alguna forma de guardar en MySQL meiante PHP las fechas con el formato d/m/Y
La pregunta era porque 1º necesitaba guardar en la BD el dya-mes-año, cosa de no complicarme la vida para mostrar los resultados de la consulta en el PHP y de este modo solo poner $rs["fecha"];

pues, como aparentemente no se puede, encontre una solucion alternativa, y procedo a preguntarles a los EXPERTOS si es que esta bien...

1º Guardo desde el PHP la fecha con $fregistro=date("Y-m-d");

2º Recupero la fecha para mostrarla en formato DIA - MES - AÑo de la siguiente forma...

Código PHP:
<?
$fecha 
explode("-",$rs["fecha"]);

$dia=$fecha[2];
$mes=$fecha[1];
$ano=$fecha[0];

//muestro la fechaa en formato dia/mes/año :si: 

echo $dia."/".$mes."/".$ano;
?>
jejeje, espero que sea de utilidad a alguno

Última edición por Chichoauza; 24/01/2005 a las 08:15
  #20 (permalink)  
Antiguo 24/01/2005, 08:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Chichoauza

El hecho de que un "motor" de base de datos (como es Mysql) tenga campos de cierto tipo como es el caso para gestionar fechas . .no es para "complicarte" más usarlos ..

Por ejemplo .. cuando quieras operar con esas fechas veras como se te va a complicar la vida .. pues en SQL ya existen funciones implementadas para hacer cáculos con fechas.

Como habrás leido en este mensaje .. la fecha actual la obtienes con la función de Mysql: CURDATE (siendo un campo tipo DATE)
Código PHP:
$sql="INSERT INTO tabla (id,fecha_registro) VALUES (id,CURDATE())"
Y el formatear tu fecha como gustes (partiendo de una fecha en DATE o DATETIME como tipo de campos) lo puedes hacer con la función de Mysql:

DATE_FORMAT()

Código PHP:
$sql="SELECT DATE_FORMAT(fecha_registro,'%e-%c-%Y') AS mi_fecha,otros_campos FROM tabla"
en $row['mi_fecha'] tendrás tu fecha formateada. (pues se usó un "alias" .. el AS)

Todo esto no es "complicarte" sino -usar- más SQL que para eso es un lenguaje própio (Lenguaje Estructurado de consultas). Todo lo que puedas resolver desde SQL será mucho más optimo que mezclar PHP (u otros lenguajes) por médio .. además de hacer más "independiente" tus apliaciones del lenguaje que uses (PHP u otros).

más info:
http://dev.mysql.com/doc/mysql/en/da...functions.html

Un saludo,
  #21 (permalink)  
Antiguo 24/01/2005, 09:10
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Pues sip ...

Como bien dice Cluster todo es puro SQL. Si estudias un poquitín más verás que MySQL tiene funciones específicas para trabajo con fechas. Por ejemplo yo tengo en unas de mis tablas un campo de tipo DATETIME y entonces el formato del mismo es yyyy-mm-dd hh:mm:ss. Ahora para trabajar con ese campo la consulta la hago de esta forma:
Código PHP:
$sql "SELECT DAYOFMONTH(fecha) as dia, DAYOFWEEK(fecha) as semana, MONTH(fecha) as mes, YEAR(fecha) as year, DATE_FORMAT(fecha,'%h:%i %p') as hora FROM noticias WHERE (activo<>0) AND (importancia=3) ORDER BY RAND()"
luego cuando haga esto:
Código PHP:
 $result mysql_query($query);
 
$fetch mysql_fetch_assoc($result); 
entonces:
Código PHP:
 $fetch["dia"// Me devolvería el día del mes 0-31
 
$fetch["semana"// Me devolvería el día de la semana 0-7
 
$fetch["mes"// Me devolvería el día del mes 0-12
 
$fetch["year"// Me devolvería el año en formato YYYY
 
$fetch["hora"// Me devolvería la hora en formato hh:mm AM/PM 
Si quieres más información busca en Google y verás que aparece mucha.
Salu2
__________________
Ing. Reynier Pérez Mira
  #22 (permalink)  
Antiguo 25/01/2005, 02:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
en www.mysql-hispano.com hay algunos artículos sobre manejo de fechas y manejo de MySQL en generla que quizá te sirvan si les dás una leidita... siquiera para tener una idea de lo que puedes hacer ¿no?
Saludos
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #23 (permalink)  
Antiguo 25/01/2005, 10:53
 
Fecha de Ingreso: septiembre-2004
Mensajes: 203
Antigüedad: 13 años, 2 meses
Puntos: 0
Desde un formulario (en el que tengo 3 campos, dia, mes año) hago una búsqueda filtrando por fecha, y mas aun, solo quiero que me salgan todas las entradas que se correspondan unicamente con el mes elegido (supongamos 08, Agosto), cómo hago ? si solo especifiqué el mes y en la BD está en formato AAAA-MM-DD ...

Saludos
__________________
Impala
  #24 (permalink)  
Antiguo 25/01/2005, 14:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
impala .. haz tus preguntas en el foro de "Base de datos" .. es SQL lo que necesitas principalmente!!.

Lo has leido ya?
http://dev.mysql.com/doc/mysql/en/da...functions.html

Un saludo,
  #25 (permalink)  
Antiguo 26/01/2005, 12:32
Avatar de Chichoauza  
Fecha de Ingreso: enero-2005
Mensajes: 106
Antigüedad: 12 años, 11 meses
Puntos: 0
bueno, bueno, gracias ya modifique esto en mis códigos y ya le di al google para aprender un poco mas en cuanto a las fechas con mysql...


me fueron de gran ayuda, claro, como siempre.

un saludo a tudos los que participaron, Gracias nuevamente
  #26 (permalink)  
Antiguo 15/07/2005, 16:45
 
Fecha de Ingreso: junio-2005
Ubicación: Mexico
Mensajes: 21
Antigüedad: 12 años, 5 meses
Puntos: 0
Exclamación agregando una duda mas de fechas

a ver todos han dicho como usar las fechas con las funciones de php y mysql
pero creo que no se resuelto la duda mas importante para mi como inserto una fecha en mysql desde php y que esta fecha es selecionada por el usuario en un campo date, yo ya use todo lo que se ha dicho en este post y nada me ha funcionado para insertar una fecha el codigo va de mil formas

desde el formato

aaaa:mm:dd
aaaa/mm/dd

y con el clasico

"INSERT INTO arc_compromisos (saccve_acuerdo )
VALUES ($fecha)";

sin conseguir que inserte la fecha alguien me puede decir donde estoy mal jejejee si no es mucha molestia la verdad me siento muy desesperado xq no me sale y creo que es algo sencillo pero bueno

espero me puedan ayudar gracias de antemano
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 14:49.