2011-01-19 35 views
6

Parece que no puedo encontrar la respuesta que estoy buscando.Crear rango de fechas de mysql

Quiero crear un rango de fechas desde 2010-11-01 hasta 2015-01-01 en una tabla.

2010-11-01 2010-11-02 2010-11-03 etc ...

Columna tipo de datos es 'Fecha'

Gracias

+0

favor ver la respuesta que he publicado. –

+0

es posible sin usar el procedimiento, consulte aquí http://stackoverflow.com/questions/2157282/generate-days-from-date-range – mathheadinclouds

Respuesta

11
DROP PROCEDURE IF EXISTS datespopulate; 
DELIMITER | 
CREATE PROCEDURE datespopulate(dateStart DATE, dateEnd DATE) 
BEGIN 
    WHILE dateStart <= dateEnd DO 
    INSERT INTO datetable (d) VALUES (dateStart); 
    SET dateStart = date_add(dateStart, INTERVAL 1 DAY); 
    END WHILE; 
END; 
| 
DELIMITER ; 
CALL datespopulate('2010-11-01','2015-01-01'); 

Nota nombré mi mesa "datetable" y la columna se denomina "d", pero no dude en cambiar esto. Funciona bien en mi extremo, avíseme si se topa con un problema.

Felicitaciones a Joe por hacer rodar la pelota. ;-)

+0

+1: Gracias por seguir este paso. –

+0

@Joe: ¡No hay problema, me alegra ayudar! ;-) –

+0

Gracias por la ayuda Chicos. – mrlayance

1

Por supuesto que podría tomar la enfoque de fuerza bruta.

set @d = cast('2010-11-01' as date); 

while (@d < '2015-01-02') do 
    insert into YourTable 
     (YourColumn) 
     values 
     (@d); 

    set @d = date_add(@d, interval 1 day); 
end while; 
+0

@Joe: 'DECLARE está permitido solo dentro de una sentencia compuesta BEGIN ... END y debe estar en su inicio, antes de cualquier otra declaración. '(según [sintaxis DECLARE] (http://dev.mysql.com/doc/refman/5.0/en/declare.html) - piensa que debe ser un procedimiento, aunque está en el camino correcto) –

+0

@radio: gracias. Respuesta editada –

+0

@Joe: sigo recibiendo un error de sintaxis en el momento. ¿Esto funciona de tu lado? –

Cuestiones relacionadas