|
|
PHP Quellcode |
1 2 3 4 5 |
$geburtsdatum = '1984-06-12'; $geburtsdatum = DateTime::createFromFormat('Y-m-d', $geburtsdatum); $jetzt = new DateTime(); $alter = $jetzt->diff($geburtsdatum); print $alter->format('%y Jahre, %m Monate und %d Tage alt'); |
Warum PHP bemühen wenn MYSQL diese Aufgaben besser erledigen kann ?
Wo ist der Fehler?
|
|
SQL Code |
1 2 3 4 5 |
SELECT name, geburtstag, (YEAR(CURDATE()) - YEAR(geburtstag)) - (RIGHT(CURDATE(), 5) < RIGHT(geburtstag, 5)) AS tieralter FROM haustier ORDER BY name; |
|
|
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
+----------+------------+------------+-----------+ | name | geburtstag | CURDATE() | tieralter | +----------+------------+------------+-----------+ | Bowser | 1989-08-31 | 2003-08-19 | 13 | | Buffy | 1989-05-13 | 2003-08-19 | 14 | | Chirpy | 1998-09-11 | 2003-08-19 | 4 | | Claws | 1994-03-17 | 2003-08-19 | 9 | | Fang | 1990-08-27 | 2003-08-19 | 12 | | Fluffy | 1993-02-04 | 2003-08-19 | 10 | | Puffball | 1999-03-30 | 2003-08-19 | 4 | | Slim | 1996-04-29 | 2003-08-19 | 7 | | Whistler | 1997-12-09 | 2003-08-19 | 5 | +----------+------------+------------+-----------+ |
$geburtsdatum als zweiter Parameter für explode sollte nicht in einfache Anführungszeichen gesetzt werden. Dafür solltest du dies in der letzten Zeile mit dem Index machen.
Womöglich ist wasserfalls Lösung aber auch performanter oder für dich besser geeignet.

|
|
PHP Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 |
$time = microtime(true); for($i=0; $i<10000; $i++) { $res = mysql_query('SELECT NOW() AS x'); mysql_fetch_array($res); } echo microtime(true) - $time; $time = microtime(true); for($i=0; $i<10000; $i++) { date('Y-m-d H:i:s'); } echo microtime(true) - $time; |