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?
Alvast hartelijk bedankt voor de hulp.
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
-> D A T E _ F O R M A T ( )
op al je vragen: omdat je niet verder nadenkt dan dat je neus lang is!!
Indien iets uit een database komt, dan kan je het ook met SQL oplossen, dan hoef je dus ook niet zo te fd-en met php functies.
En je moet geen aliasssen zetten die gelijk zijn aan de veldnamen die je gebruikt in je SQL!
RTFM: -> D A T E _ F O R M A T ( )
op al je vragen: omdat je niet verder nadenkt dan dat je neus lang is!!
Indien iets uit een database komt, dan kan je het ook met SQL oplossen, dan hoef je dus ook niet zo te fd-en met php functies.
En je moet geen aliasssen zetten die gelijk zijn aan de veldnamen die je gebruikt in je SQL!
Gewijzigd op 15/10/2010 21:16:37 door Noppes Homeland
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!
Noppes Homeland op 15/10/2010 22:06:21:
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?
SELECT DATE_FORMAT(birthday,'%d') as dag,
SELECT DATE_FORMAT(birthday,'%m') as maand,
SELECT DATE_FORMAT(birthday,'%y') as jaar
from jouw tabel
Gewijzigd op 15/10/2010 22:16:46 door Aad B
Normaal als ik het DATETIME type gebruik, dan haal ik het op als UNIX_TIMESTAMP(date)
en dan doe ik
date("y", $row['date'])
Kan handig zijn als je dezelfde datum op verschillende manieren wilt weergeven.
het moet zo:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
SELECT
DATE_FORMAT(birthday,'%d') as dag,
DATE_FORMAT(birthday,'%m') as maand,
DATE_FORMAT(birthday,'%y') as jaar
from
MEMBERS
DATE_FORMAT(birthday,'%d') as dag,
DATE_FORMAT(birthday,'%m') as maand,
DATE_FORMAT(birthday,'%y') as jaar
from
MEMBERS
En dit is zonder meer de snelste en makkelijkste manier en vergeet dat UNIX_TIMESTAMP gedoe.
dat had ik al begrepen. bedankt!
DATE_FORMAT is er alleen voor om je datum/tijd te presenteren, voor de rest kan je er niets meer mee.
Hartelijk bedankt voor de hulp
Noppes Homeland op 15/10/2010 21:15:24:
RTFM: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
-> D A T E _ F O R M A T ( )
[...]
-> D A T E _ F O R M A T ( )
[...]
lol
Milo S op 16/10/2010 13:58:28:
Of je doet wat Aad zegt gewoon in 1 keer...
Nee, dat mag niet van Noppes. Je moet eerst je veld ophalen en dan lekker PHP gaan processen om het te presenteren. In 1x keer ophalen in de juiste presentatie is niet toegestaan en kennelijk ook te moeilijk.
@Aad, je weet er weer een aardige draai aan te geven. Het gaat om het feit dat jij een alias zet welke gelijk is aan een veld welke is opgenomen in de query. Dat kan leiden tot verkeerde resultaten.