Matthias Reitinger
ɐɯıǝɹ
Hallo,
die Methode von Gumbo funktioniert allerdings über Jahresgrenzen hinweg nicht zuverlässig:
Thomas' Vorschlag ist auch noch nicht perfekt:
Grüße,
Matthias
die Methode von Gumbo funktioniert allerdings über Jahresgrenzen hinweg nicht zuverlässig:
Code:
mysql> DESCRIBE `birthday`;
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| id | int(11) | | PRI | NULL | auto_increment |
| bdate | date | YES | | NULL | |
+-------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> SELECT CURRENT_DATE, `bdate`,
-> (TO_DAYS(CONCAT(YEAR(CURRENT_DATE), "-", DATE_FORMAT(`bdate`, "%m-%d"))) - TO_DAYS(CURRENT_DATE) + 366) % 366 AS `Tage_bis_zum_Jahrestag`
-> FROM `birthday`;
+--------------+------------+------------------------+
| CURRENT_DATE | bdate | Tage_bis_zum_Jahrestag |
+--------------+------------+------------------------+
| 2006-12-28 | 2000-12-31 | 3 |
| 2006-12-28 | 2001-01-01 | 5 |
+--------------+------------+------------------------+
2 rows in set (0.00 sec)
Thomas' Vorschlag ist auch noch nicht perfekt:
Code:
mysql> SELECT CURRENT_DATE,bdate,
-> DATEDIFF(MAKEDATE(YEAR(CURRENT_DATE())+1, DAYOFYEAR(bdate)),CURRENT_DATE()) % DAYOFYEAR(LAST_DAY(CURRENT_DATE())) AS `diff`
-> FROM birthday;
+--------------+------------+------+
| CURRENT_DATE | bdate | diff |
+--------------+------------+------+
| 2006-12-28 | 2000-12-31 | 4 |
| 2006-12-28 | 2001-01-01 | 4 |
+--------------+------------+------+
2 rows in set (0.00 sec)
Grüße,
Matthias
Zuletzt bearbeitet: