Foros del Web » Programando para Internet » PHP »

campo datetime en mysql

Estas en el tema de campo datetime en mysql en el foro de PHP en Foros del Web. hola, estoy con un formulario que insertará datos varchar y mediumtext en la base de datos MySQL, pero no es eso lo que me preocupa ...
  #1 (permalink)  
Antiguo 06/03/2003, 04:36
Avatar de kaiowas  
Fecha de Ingreso: septiembre-2001
Ubicación: el averno...
Mensajes: 531
Antigüedad: 16 años, 3 meses
Puntos: 0
campo datetime en mysql

hola,

estoy con un formulario que insertará datos varchar y mediumtext en la base de datos MySQL, pero no es eso lo que me preocupa ahora.

mi problema es que me gustaría almacenar junto a cada registro de los anteriores, la fecha y hora en la que se produjo la inserción de cada noticia.

leyendo por ahi veo que lo mejor que podría hacer es crear un campo datetime, pero no se como, ya que los otros campos insertarán datos en la BD manualmente, osea, por medio del form, pero la fecha y hora quiero que se inserte automáticamente....

ahora estoy en la consola mysql creando la base de datos, pero no se como crear el campo datetime



Código PHP:
CREATE TABLE noticias 
ID int(11) DEFAULT '0' NOT NULL auto_increment
Titular varchar(64), 
Imagen varchar(64),
Cuerpo mediumtext
PRIMARY KEY (ID), 
UNIQUE ID (ID
); 
alguna idea?

es que no se si sería crear la variable Fecha y a continuación datetime o yo que sé...

bueno, agradecería alguna pistilla.....


thanks
  #2 (permalink)  
Antiguo 06/03/2003, 06:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Puedes usar un campo DATETIME en tu estructura SQL de tu tabla ...

Y lo de la fecha automatica (fecha y hora) .. puedes usar NOW() de Mysql en la misma consulta que hagas de INSERT o UPDATE si lo necesitas ... Algo tipo:

INSERT ....... VALUES('$campo1',NOW(),'$campo2') ....

mas info:
www.mysql.com/doc (el manual de Mysql .. busca el capítulo de tipos de datos y el de funciones para tratar fechas .. pues mas adelante te hará falta un DATE_FORMAT() para obtener la fecha DATETIME con tu formato que definas .. Los DATETIME se guardan: aaaa/dd/mm hh:mm:ss y tu seguro q lo quieres presentar como dd/mm/aaa .. u otro formato .. )

Tambien puedes usar un campo INT y guardar la fecha en formato TIMESTAMP .. con eso obtienes los segundos transcuridos desde el nosecuantos del '70 hasta la fecha. Para obtener la fecha/hora actual en formato TIMESTAMP via PHP deberias usar time() ... Y para darle formato date() (todo esto de PHP) ..

Personalmente te recomiendo el método "SQL" .. pero sobre gustos no hay nada escrito ...

Un saludo,
  #3 (permalink)  
Antiguo 06/03/2003, 07:21
Avatar de kaiowas  
Fecha de Ingreso: septiembre-2001
Ubicación: el averno...
Mensajes: 531
Antigüedad: 16 años, 3 meses
Puntos: 0
bueno, como sabes, lo que tu digas va a misa, y si tu recomiendas el uso del metodo SQL pues, amén, ahora investigaré como no solo formatear, sino adaptar a mi horario español gmt+1.


mil gracias Dr.
  #4 (permalink)  
Antiguo 06/03/2003, 07:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mmm ... si vas a trabajar en horas GMT .. tal vez te conviene usar la versión "PHP" usando un campo INT en tu tabla y metiendole time() .. (bueno será gmmktime) ..

Pero lo que no deberias usar el NOW() .. pues eso te dará la hora del servidor Mysql y ese está en EE.UU. en tu caso ..

Para eso ..uses lo q uses (tipo de dato en tu tabla) .. la hora la tienes q generar desde PHP en horario GMT .. a no ser que Mysql tenga alguna función para obtener la fecha actual en formato GMT?

Un saludo,
  #5 (permalink)  
Antiguo 06/03/2003, 07:39
Avatar de kaiowas  
Fecha de Ingreso: septiembre-2001
Ubicación: el averno...
Mensajes: 531
Antigüedad: 16 años, 3 meses
Puntos: 0
jejejej, ok, creo entonces que voy a pillar el script del otro dia que estaba genial, y conla hora gmt generada la inserto en un campo y a triunfar...... gracias clust.....
  #6 (permalink)  
Antiguo 06/03/2003, 07:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Por ejemplo ..

si usa un campo DATETIME en tu BD y generas la hora GMT con PHP con gmdate("formato ODBC fechas") .. se lo puedes meter al campo DATETIME q definas como otra variable cualquiera ...

Con eso luego puedes usar DATE_FORMAT de la forma habitual para presentar las fechas en formato GMT .. Tambien hay funciones como UNIX_TIMESTAMP() de Msyql para obtener por ejemplo esa fecha DATETIME q tienes en formato Timestamp .. útil si se lo quieres meter a un gmdate("formato que le des",$row['tufecha_gmt']) o a un gmmktime() para hacer algun cálculo de diferencia horaria ...

No se que sistema estas haciendo .. pero si tienes previsto que esas fechas se "personalicen" viendose a diferentes franjas horarias .. es recomendable que en la Tabla q guardes tu fecha lo hagas en horario GMT (0) .. osese sin ningun + o - diferencia horaria .. así podras calcular las diferencias horarias para cada sitio con respecto al GMT ...

Un saludo,
  #7 (permalink)  
Antiguo 06/03/2003, 08:56
Avatar de kaiowas  
Fecha de Ingreso: septiembre-2001
Ubicación: el averno...
Mensajes: 531
Antigüedad: 16 años, 3 meses
Puntos: 0
joooooder, si que es complejo.... lo voy a tener que leer unas venticatorce veces para entenderlo, pero ché, gracias...

te explico brevemente como lo he resuelto y cual es mi objetivo.

es un form (como has visto y que ya lo he modificado, por si quieres volver a echarle un vistazo) insertas el contenido de la noticia, y hago aparecer en un campo READONLY el resultado del script del otro dia, osea, la fecha actual gmt+1, ese campo del formulario ya viaja a la base de datos insertandose como la fecha de registro de la noticia en un simple campo VARCHAR(64).

[AL QUE LE INTERESE ESTÁ COMO UNAS DOS PAGINAS ATRAS EN ESTE FORO, CON TITULO "funcion date()]

<editado>Saludetes</editado>
  #8 (permalink)  
Antiguo 06/03/2003, 11:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ya vi que guardas la "frase completa" con la fecha .. Eso no es del todo correcto .. Debes de guardarte la fecha solo "numericamente" sea en formato ODBC (lo q dá un DATE o DATETIME) .. o bien en formato TIMESTAMP ..

Pero NO guardarte la fecha tal q: "hola, esto lo puse el martes 21 de abril del 2003, q feliz soy xD" .. Eso como veras generas un montonnn de datos repetidos .. ademas q si un dia te da por cambiar la frase de la fecha y decir .. "Hoy es Martes, 21 de Abril del 2003, no soy feliz :(" .. pues será pco mas q complicado hacerlo...

(jeje menudo ejemplito xD) ..

Bueno .. lo q te tienes que guardar es la fecha SOLO y cuando presentes ese dato en tus listados de tus consultas o donde lo quieras Ahí le das formato y le pones la frasecita de turno .. Si es necesario tendras que desglosar la fecha en "partes" (dia, mes, año .. etc) para poder componer una frase tipo como la del ejemplo ..

Un saludo,
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 15:31.