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

llenar tabla con fechas

Estas en el tema de llenar tabla con fechas en el foro de Mysql en Foros del Web. Hola Ojalá puedan ayudarme. Quiero llenar una tabla con fechas a partir del 01/01/2009 hasta el 31/12/2050, un registro por cada dia... La estructura de ...
  #1 (permalink)  
Antiguo 06/03/2009, 03:21
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Pregunta llenar tabla con fechas

Hola

Ojalá puedan ayudarme. Quiero llenar una tabla con fechas a partir del 01/01/2009 hasta el 31/12/2050, un registro por cada dia... La estructura de la tabla es:

dia (TINYINT(2)), mes (TINYINT(2)), ano (INT(4)), reservado(TINYINT(1)),

El campo 'reservado' seria en principio todos en 0.

¿Cómo podría hacer esto?
  #2 (permalink)  
Antiguo 06/03/2009, 18:44
 
Fecha de Ingreso: febrero-2009
Mensajes: 36
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: llenar tabla con fechas

Cita:
Iniciado por frasko01 Ver Mensaje
Hola

Ojalá puedan ayudarme. Quiero llenar una tabla con fechas a partir del 01/01/2009 hasta el 31/12/2050, un registro por cada dia... La estructura de la tabla es:

dia (TINYINT(2)), mes (TINYINT(2)), ano (INT(4)), reservado(TINYINT(1)),

El campo 'reservado' seria en principio todos en 0.

¿Cómo podría hacer esto?
bueno! yo lo he hecho con procedimiento almacenado!! o bien con un trigger! en fin creo q el comando es current year o current date! por ahi va el asunto! ahora estoy en el trabajo y no recuedo claramente que comando poner para q mysql te guarde solo dia mes y año! pero se `puede!!!
  #3 (permalink)  
Antiguo 07/03/2009, 13:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: llenar tabla con fechas

frasko01,
seguramente puedas hacerlo con un procedimiento almacenado o de algún otro modo; yo he hecho alguna prueba con programación y consultas de inserción mediante iteración a la base de datos; un pequeño programa de unas líneas me ha incluido casi 30.000 registros en unos segundos, pero he observado que sólo me cubre hasta el primer día de 2038. Todavía no he encontrado la causa, aunque probablemente tenga que ver con los rangos de años que cubren las diferentes funciones utilizadas por mí en PHP y MysQL. Tengo que verlo. Lo que sí te digo ahora es que no debes usar TinyInt(4) para año, sino un int(11) o un campo de tipo YEAR. No puedo ponerte aquí el código PHP que me sirve para restar los días entre la fecha y luego hacer la iteración. Lo que sí puedo ponerte aquí es la parte de MySQL
insert into nombretabla (dia, mes, ano) VALUES (date_format(date_add('2009/01/01',INTERVAL @cont day), '%d'), date_format(date_add(''2009/01/01',INTERVAL @cont day), '%m'), date_format(date_add('2009/01/01',INTERVAL @cont day),'%Y'))

@cont es el contador de la iteración que va desde 0 hasta el número de días de diferencia entre el comienzo y final. En cuanto a marcado, no tienes que hacer nada, creas el campo, le pones que no aceptas NULL, y valor por defecto 0. Cuando inserte el otro campo, cargará 0 en cada registro.

Última edición por jurena; 10/03/2009 a las 01:49
  #4 (permalink)  
Antiguo 09/03/2009, 10:59
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: llenar tabla con fechas

Gracias jurena,

He cambiado la estructura de la tabla, ahora sólo tengo un campo 'fecha'.

He hecho lo siguiente con el código que pusiste:

Código PHP:
for($cont=0$cont<15330$cont++){
    
$sql "INSERT INTO fechas ( reservado, fecha ) VALUES ( '0', date_format(date_add('2009-01-01',INTERVAL $cont), '%d') )";
    
mysql_query($sql,$c) or die(mysql_error($c));

Pero esto me da un error de sintaxis:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2009-01-01',INTERVAL 0), '%d') )' at line 1

¿Qué puede ser?
  #5 (permalink)  
Antiguo 09/03/2009, 11:09
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: llenar tabla con fechas

Si usas un solo campo, yo lo haría así:
INSERT INTO fechas ( reservado, fecha ) VALUES ( 0, date_format(date_add('2009-01-01',INTERVAL $cont DAY), '%Y-%m-%d') )

He quitado todo lo que es PHP y únicamente he dejado la variable $cont
  #6 (permalink)  
Antiguo 09/03/2009, 11:13
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: llenar tabla con fechas



Muchas gracias. De nuevo me habeis sacado de un apuro.

Saludos
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 10:45.