Bij het registreren op mijn website dienen gebruikers hun geboortedatum in te vullen. Deze wordt vervolgend in de database opgeslagen als "2005-01-01" in een veld van het type DATE.
Als ik deze datum later ophaal met de query:
SELECT UNIX_TIMESTAMP(birthday) AS birthday FROM members
en deze vervolgens weergeef met:
echo date("d-m-Y", $row['birthday']);
Dan staat er 31-12-2004.
Hoe komt dit?
Wat doe ik fout?
Hoe kan ik dit beter doen?
er is geen enkele belemmering om een alias te gebruiken die gelijk is aan de veldnaam. Het wordt zelfs heel vaak gebruikt met name bij functies zoals SELECT AVG(bedrag) as bedrag of SELECT sum(bytes) as bytes. Het werkt gewoon, je resultaat wordt er niet minder om.
Aad, schrijf nu geen onzin, het kan wel degelijk zijn dat een alias het gesorteerde resultaat doet verneuken. En dus geef je je alias nooit eenzelfde naam als een veld wat in de query gebruikt wordt!
Aad, schrijf nu geen onzin, het kan wel degelijk zijn dat een alias het gesorteerde resultaat doet verneuken. En dus geef je je alias nooit eenzelfde naam als een veld wat in de query gebruikt wordt!
@Noppes: nog nooit problemen mee gehad. Ik programmeer al meer dan 10 jaar SQL en PL/SQL weliswaar meer in Oracle dan in MySQL maar toch nog nooit problemen mee gehad.
Ik had al in de functielijst gekeken, maar deze functie over het hoofd gezien.
Ik moet wat duidelijker zijn, nu kan ik nog steeds niet wat ik precies wil. Ik wil de datum uit de database halen, en vervolgens de dag, maand en het jaar apart hieruit halen. Is het dan al het makkelijkst als ik deze alle 3 apart ophaal, of kan het ook eenvoudig met php, behalve met explode, met de date functie ofzo?
Het meest eenvoudige is om dit in je SQL statement te doen. Kijk naar MySQL date functions.
SELECT DATE_FORMAT(birthday,'%d') as dag,
SELECT DATE_FORMAT(birthday,'%m') as maand,
SELECT DATE_FORMAT(birthday,'%y') as jaar
from jouw tabel
Als je dag maand jaar uit een datum wilt halen dan doe je dat al niet bij voorbaat met DATE_FORMAT maar gebruik je DAY/MONTH/YEAR of je gebbruikt EXTRACT
DATE_FORMAT is er alleen voor om je datum/tijd te presenteren, voor de rest kan je er niets meer mee.