Einzelnen Beitrag anzeigen

jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: SQL Frage zu Datumswerten

  Alt 15. Nov 2011, 22:44
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.
Gruß, Jo
  Mit Zitat antworten Zitat