2011-01-19 3 views
6

Vous n'arrivez pas à trouver la réponse que je recherche.Créer une plage de dates mysql

Je veux créer une plage de dates du 2010-11-01 au 2015-01-01 dans un tableau.

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

colonne type de données est 'Date'

Merci

+0

s'il vous plaît voir la réponse que j'ai posté. –

+0

c'est possible sans utiliser la procédure, voir ici http://stackoverflow.com/questions/2157282/generate-days-from-date-range – mathheadinclouds

Répondre

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'); 

Je note nommé ma table "datetable" et la colonne est nommée "d", mais ne hésitez pas à changer cela. Fonctionne bien sur ma fin, laissez-moi savoir si vous avez un problème.

Félicitations à Joe pour avoir fait bouger les choses. ;-)

+0

+1: Merci d'avoir donné suite à celui-ci. –

+0

@Joe: Pas un problème, heureux d'aider! ;-) –

+0

Merci pour l'aide les gars. – mrlayance

1

Vous pouvez certainement prendre la approche par force brute.

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 autorisé uniquement dans une instruction BEGIN ... END et doit être à son début, avant toute autre déclaration. '(pour [syntaxe DECLARE] (http://dev.mysql.com/doc/refman/5.0/en/declare.html) - pensez que cela doit être une procédure, bien que vous soyez sur la bonne voie) –

+0

@ Brad: Merci. Réponse éditée –

+0

@Joe: Je reçois toujours une erreur de syntaxe dans la condition while. Cela fonctionne-t-il de votre côté? –