Du kannst auch eine Monstertabelle nehmen, die bereits existiert und dich daran "anlehnen". Dann geht es mit einem bloßen Select Statement oder einer View. Je nach Bedarf dann mit Offset und Einschränkungen arbeiten. In jedem Fall sollte sichergestellt sein, dass die Basistabelle groß genug ist. Bei Verwendung eines variablen Offset ist das allerdings machbar.
Im Prinzip erzeugst Du mittels der Basistabelle ein fortlaufende Nummer, die Du in ein Datum umwandelst. Das musst Du nur noch nach Bedarf formatieren. Etwa so:
SQL-Code:
mysql>
select curdate();
+
------------+
| curdate() |
+
------------+
| 2011-11-15 |
+
------------+
1 row
in set (0.00 sec)
mysql> # Jahreswechsel, relativ zu curdate (s.o)
mysql>
SELECT ADDDATE(Curdate(), INTERVAL rownum+40 DAY)
->
FROM (
SELECT IF(@a, @a := @a + 1, @a := 1) - 1
AS rownum
->
FROM information_schema.TABLES t,
-> (
SELECT @a := 0) r) x
->
WHERE x.rownum < 10;
+
--------------------------------------------+
| ADDDATE(Curdate(), INTERVAL rownum+40 DAY) |
+
--------------------------------------------+
| 2011-12-25 |
| 2011-12-26 |
| 2011-12-27 |
| 2011-12-28 |
| 2011-12-29 |
| 2011-12-30 |
| 2011-12-31 |
| 2012-01-01 |
| 2012-01-02 |
| 2012-01-03 |
+
--------------------------------------------+
10 rows
in set (0.00 sec)
mysql> # Schaltjahr 2011, Februar, relativ zu curdate (s.o)
mysql>
SELECT ADDDATE(Curdate(), INTERVAL rownum-265 DAY)
->
FROM (
SELECT IF(@a, @a := @a + 1, @a := 1) - 1
AS rownum
->
FROM information_schema.TABLES t,
-> (
SELECT @a := 0) r) x
->
WHERE x.rownum < 10;
+
---------------------------------------------+
| ADDDATE(Curdate(), INTERVAL rownum-265 DAY) |
+
---------------------------------------------+
| 2011-02-23 |
| 2011-02-24 |
| 2011-02-25 |
| 2011-02-26 |
| 2011-02-27 |
| 2011-02-28 |
| 2011-03-01 |
| 2011-03-02 |
| 2011-03-03 |
| 2011-03-04 |
+
---------------------------------------------+
10 rows
in set (0.00 sec)
p.s.: Irgendwie ist die Formatierung hops, aber man kann es glaub ich auch so erkennen.