Foros del Web » Programando para Internet » PHP »

Introducir fecha/hora en MySQL

Estas en el tema de Introducir fecha/hora en MySQL en el foro de PHP en Foros del Web. Bueno Días: Tengo un formulario en el q los usuarios se registran a mi page, estos datos ban directos a un PHP q lo mete ...

  #1 (permalink)  
Antiguo 10/06/2003, 09:24
Avatar de ZaPo  
Fecha de Ingreso: junio-2003
Ubicación: KamiYoPlanet
Mensajes: 221
Antigüedad: 20 años, 10 meses
Puntos: 1
Introducir fecha/hora en MySQL

Bueno Días:

Tengo un formulario en el q los usuarios se registran a mi page, estos datos ban directos a un PHP q lo mete en una base de datos MySQL, como podria hacer para que el PHP meta el dia y la hora en el que se introdujeron los datos en un canpo de tipo date.

bueno espero respuestas, jeje

Gracias de antemano


AGuR!
  #2 (permalink)  
Antiguo 10/06/2003, 09:32
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Te voy a dar otra respuesta, que no es exactamente lo mismo pero bueno...

En mi caso lo que hago es guardar el tiempo en formato time() con lo cual el campo de mi base de datos es un entero... Luego si quiero mostrar el tiempo por pantalla sólo le aplico la función date(), por ejemplo date("d m Y", time()); El segundo parámetro de esta función sería el valor almacenado en la base de datos, y la función date() me devolvería la fecha formateada a la que corresponde el tiempo almacenado en la base de datos

Te recomiendo eso ya que imaginate que cuando tengas 1000 registros en la base de datos quieres cambiar el formato de fecha... pues con tu forma tendrías que ir registro por registro, pero con esta otra forma sólo cambiarias los parámetros de la función date, además si quieres hacer zonas horarias con mi forma es más fácil (sólo sumar o restar múltiplos de 3600 )

Si necesitas algo más aquí estamos.

Saludos
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #3 (permalink)  
Antiguo 10/06/2003, 09:33
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
insert into tabla (campo1, campo2, fechahora) values ($valor1,'$valor2',now())

Saludos!
__________________
Manoloweb
  #4 (permalink)  
Antiguo 10/06/2003, 09:36
Avatar de ZaPo  
Fecha de Ingreso: junio-2003
Ubicación: KamiYoPlanet
Mensajes: 221
Antigüedad: 20 años, 10 meses
Puntos: 1
Muchas gracias a los dos! probare las dos cosas y ya veremos lo q eligo...

jeje, tamos en buen camino


AgUR!
  #5 (permalink)  
Antiguo 10/06/2003, 09:36
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años
Puntos: 0
Hola, yo lo hago de la siguiente forma (creo que hay mejores formas de hacerlo pero hay te va).

$time = time();

tienes que guardar en el registro la variable $time, y despues cuando quieras leerlo simplemente tienes que utilizar la funcióin date(); para sacarlo en el formato que quieras.

Espero que allas entendido, un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #6 (permalink)  
Antiguo 10/06/2003, 09:37
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Lo que dijo Pino es lo que recomiendo yo... ¡¡¡bien dicho!!!
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #7 (permalink)  
Antiguo 10/06/2003, 09:42
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Aunque si lo que quieres es gastar menos tiempo, codigo y recursos del sistema, puedes dejarle la tarea a MySQL, como en el ejemplo que te puse.

En ese caso el tiempo registrado es realmente la fecha y hora en que el registro fue creado, y despues puedes hacer querys menos complicados para determinar rangos de fechas, operaciones complejas como:

select date_format(fecnac,"%m-%d")as cumple,
nombres,
fecnac
from nuke_liga_jugadores
where (unix_timestamp(date_format(fecnac,"2003-%m-%d 00:00:00"))) between (unix_timestamp(date_format(curdate(),"2003-%m-%d 00:00:00"))) and (unix_timestamp(date_format((curdate()+interval 7 day),"2003-%m-%d 00:00:00")))
order by cumple
__________________
Manoloweb
  #8 (permalink)  
Antiguo 10/06/2003, 09:45
Avatar de ZaPo  
Fecha de Ingreso: junio-2003
Ubicación: KamiYoPlanet
Mensajes: 221
Antigüedad: 20 años, 10 meses
Puntos: 1
Perdon Ferny, ahora he empezado a mira lo q tume decias, y no entiendo una cosa, para q quiero yo cambiar el formato de la fehca? perdona la pregunta pero esq no lo veo muy logico... :P

Ya me diras tus razones, por ahora lo de manolete es lo q estaba buscando pero me interesa lo de Ferny y lo de Pino, siempre hay q aprenderse losidferentes caminos, no solo el mas facil.

jeje, beinga gracias y hasta pronto!!



HuRRenaRTe!
  #9 (permalink)  
Antiguo 10/06/2003, 09:50
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Me refiero a que hoy me gusta poner, por ejemplo:

Martes 10 de Junio de 2003

Pero imagina que dentro de unos meses me da la venada de cambiar de formato:

Martes 10-06-2003

Pues eso simplemente sería cambiar la función date(), sin tocar los registros en formato entero (time()) de la base de datos... con lo cual es muuuucho más fácil de cambiarlo

Si no vas a cambiar el formato, entonces guardalo como quieras... yo solo te di esa idea que en mi opinión es mejor.

Saludos
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #10 (permalink)  
Antiguo 10/06/2003, 09:53
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años
Puntos: 0
Si tiene razón ferny así es lo mejor, yo lo tengo así en mi web y esta cojonudo.

Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #11 (permalink)  
Antiguo 10/06/2003, 09:55
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
Re: Introducir fecha/hora en MySQL

Cita:
Mensaje Original por ZaPo
Bueno Días:

Tengo un formulario en el q los usuarios se registran a mi page, estos datos ban directos a un PHP q lo mete en una base de datos MySQL, como podria hacer para que el PHP meta el dia y la hora en el que se introdujeron los datos en un canpo de tipo date.

bueno espero respuestas, jeje

Gracias de antemano


AGuR!

Para empezar tu campo debe ser DateTime, con un tipo Date solo puedes meter la fecha
  #12 (permalink)  
Antiguo 10/06/2003, 09:59
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años
Puntos: 0
De la forma que decimos yo y ferny no se necesitas un campo especial para fechas, por lo menos yo tengo un varchar o un char no recuerdo. Y funciona a la perfección como ya dije.

Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #13 (permalink)  
Antiguo 10/06/2003, 10:02
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
Pino: Ya quiero ver que tu saques registros con un rango de fechas con campos de tipo varchar
  #14 (permalink)  
Antiguo 10/06/2003, 10:06
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Un mismo campo de texto sirve... el caso es almacenar un numerito de 10 cifras (11 si quieres que tu script funcione a partir del día 7-Sep-2014 a las 06:50:08 am )
Saludos
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #15 (permalink)  
Antiguo 10/06/2003, 10:08
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
La misma pregunta para ferny
  #16 (permalink)  
Antiguo 10/06/2003, 10:09
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años
Puntos: 0
Hola, como ves ya te respondierón DotNetDeveloper. Si que se puede, yo lo unico que hago es guardas el resultado de un time(); en un campo de texto, y despues lo saco de la forma que yo quiero con la función date();

Espero que lo allas entendido.

Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #17 (permalink)  
Antiguo 10/06/2003, 10:13
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Defines un campo varchar de 11 caracteres por ejemplo y ya está... en él almacenas el numerito, luego sólo tienes que leerlo de la base de datos y pasarlo por la función date...
Eso debería funcionar, yo quería decir que mis primeros scripts los hacía así pero con un campo char de 15 caracteres, ahora lo hago con un campo bigint de 15 caracteres...
Pero sí es posible meterlo en un varchar
Saludos
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #18 (permalink)  
Antiguo 10/06/2003, 10:17
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
Nadie duda que sea posible meterlo en un varchar, ni que despues puedas darle formato. La duda esta en que si por medio de ese campo pueden sacar un rango de fechas, como MySQL va a comparar fechas si lo que almacenan ustedes es una cadena y no una fecha para MySQL.

Voy a probar... y regreso
  #19 (permalink)  
Antiguo 10/06/2003, 10:19
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años
Puntos: 0
Hola, yo creo que si que se puede comparar fechas, con un pequeño script en php ya esta, hay la clave es saber darle el formato adecuado y ya esta.

Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #20 (permalink)  
Antiguo 10/06/2003, 10:22
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Me pregunto si funcionaría con: SELECT * FROM tabla ORDER BY fecha DESC (la fecha más actual la primera). Debería funcionar aunque usando el campo bigint que yo uso eso no sería problema alguno
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #21 (permalink)  
Antiguo 10/06/2003, 10:24
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
Pino: acabas de darle la razón a Manoloweb:

1.- Con tu solución necesitas programar más
2.- Es una baja en rendimiento el hecho de tener más procesos.

Prueba:

CREATE TABLE `fecha` (`fecha_fecha` VARCHAR (10))

INSERT INTO fecha (fecha_fecha) VALUES ('2003-01-01')
INSERT INTO fecha (fecha_fecha) VALUES ('2004-01-01')
INSERT INTO fecha (fecha_fecha) VALUES ('2005-01-01')

select DATE_FORMAT(fecha_fecha,'%Y-%m-%d') as fecha_fecha WHERE
fecha_fecha>='2004-01-01'

Y manda error de sintaxis =D
  #22 (permalink)  
Antiguo 10/06/2003, 10:31
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años
Puntos: 0
ferny ferny lo que tu planteas tambien funciona con un char. Bueno lo que decimos ferny y yo tiene una ventaja, que depues dentro de millones de años puedes cambiar el formato de la fecha, y bueno programas un mini script para comparar fechas, tampoco es tanto gasto de tiempo, también lo gastas de tu forma,haciendo consultas sql (que es aún más dificil).

Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #23 (permalink)  
Antiguo 10/06/2003, 10:36
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Es el resultado de un time() lo que hay que insertar, por ejemplo: 1053204681 O sea un numero entero de 10 cifras...

P.D.: cuando antes dije que las 11 cifras sería a partir del día nosecual del año 2014, eso está mal, lo que pasa es que se me salió de fecha... o sea las 11 cifras llegarán dentro de varios cientos de años por tanto nos dedicaremos a programar con 10 cifras
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #24 (permalink)  
Antiguo 10/06/2003, 10:39
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
Ahhhhhhhhhhhhhhhhhhh

Bueno con esa explicación ni como quejarse.

Pero... vuelvo a lo mismo, como vas a sacar un rango de fechas si tu "numero" es una cadena y no un número

Ya me imagino a Pino leyendo TODOS los registros e ir comparando las fechas que cumplan. Cosa que con MySQL no necesitas leer TODOS con una simple condición. Eso no es baja en rendimiento? Ja.
  #25 (permalink)  
Antiguo 10/06/2003, 10:42
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Yo creo que sí funcionaría con SELECT * FROM tabla ORDER BY fecha DESC siendo fecha un campo varchar de 10 caracteres con los numeros almacenados... es cuestión de probar (y si no va, pues usar el campo bigint de 10 cifras, que seguro que sí es ordenable)
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #26 (permalink)  
Antiguo 10/06/2003, 10:46
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
El Order By si ferny, pero que tal un <= comparado con una fecha. No no no
  #27 (permalink)  
Antiguo 10/06/2003, 10:46
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Lo acabo de probar y sí funciona, lo ordena de forma ASC o DESC según se lo pida
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #28 (permalink)  
Antiguo 10/06/2003, 10:47
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años
Puntos: 0
Formateando la fecha con date(); y despues con un MICRO script de php, listo, aaaaaaaaaaaaaaaaaaa me callo tienes tu razón, no se si esto sería posible.

Un saludo

PD: Que conste en acta que lo pensaré
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #29 (permalink)  
Antiguo 10/06/2003, 11:03
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Pues esto acabo de hacer:

CREATE TABLE `prueba` (
`fecha` VARCHAR( 10 ) NOT NULL ,
INDEX ( `fecha` )
);

Meto estos valores (en ese orden):

1004564564
1034454454
1052348642
1043247893
1067897445

SELECT fecha FROM `prueba` WHERE fecha <= '1050000000'
Devuelve: 1004564564, 1034454454 y 1043247893

SELECT fecha FROM `prueba` WHERE fecha >= '1050000000'
Devuelve: 1052348642 y 1067897445

SELECT fecha FROM `prueba` WHERE fecha = '1067897445'
Devuelve: 1067897445

SELECT fecha FROM `prueba` WHERE fecha >= '1060000000'
Devuelve: 1067897445

SELECT fecha FROM `prueba` WHERE fecha >= '1070000000'
No devuelve nada (como era de esperar).

En mi humilde opinión, funciona.
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #30 (permalink)  
Antiguo 10/06/2003, 11:10
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
Cita:
Mensaje Original por ferny
Me refiero a que hoy me gusta poner, por ejemplo:

Martes 10 de Junio de 2003

Pero imagina que dentro de unos meses me da la venada de cambiar de formato:

Martes 10-06-2003

Pues eso simplemente sería cambiar la función date(), sin tocar los registros en formato entero (time()) de la base de datos... con lo cual es muuuucho más fácil de cambiarlo

Si no vas a cambiar el formato, entonces guardalo como quieras... yo solo te di esa idea que en mi opinión es mejor.

Saludos
Creo que tienes razón ferny, pero no me ire sin pelear .

Con la función Date_Format() de MySQL haces lo mismo que tu quieres pero bien hecho, o sea con los datos tipo Date, que para eso se hicieron

A fin de cuentas solo modificas el segundo parametro de DATE_FORMAT y listo, haciendo las cosas como deben de ser
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 09:16.