type DATE

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ron -

Ron -

15/10/2010 21:04:25
Quote Anchor link
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?

Alvast hartelijk bedankt voor de hulp.
 
PHP hulp

PHP hulp

24/04/2024 03:12:50
 
Noppes Homeland

Noppes Homeland

15/10/2010 21:15:24
Quote Anchor link
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 ( )

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
 
Aad B

Aad B

15/10/2010 21:38:00
Quote Anchor link
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.
 
Noppes Homeland

Noppes Homeland

15/10/2010 22:06:21
Quote Anchor link
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 B

Aad B

15/10/2010 22:09:33
Quote Anchor link
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.
 
Ron -

Ron -

15/10/2010 22:11:07
Quote Anchor link
Bedankt voor de tip over de alias.

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?
 
Aad B

Aad B

15/10/2010 22:12:51
Quote Anchor link
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
Gewijzigd op 15/10/2010 22:16:46 door Aad B
 
Ron -

Ron -

15/10/2010 22:30:58
Quote Anchor link
Ok, bedankt, dat had ik ook al in gedachten. Maar misschien is er een makkelijkere manier om dit te doen.

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.
 
Aad B

Aad B

15/10/2010 22:38:19
Quote Anchor link
Overigens was mijn voorbeeld iets teveel cut and past....
het moet zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


En dit is zonder meer de snelste en makkelijkste manier en vergeet dat UNIX_TIMESTAMP gedoe.
 
Ron -

Ron -

15/10/2010 22:44:41
Quote Anchor link
dat had ik al begrepen. bedankt!
 
Noppes Homeland

Noppes Homeland

16/10/2010 10:01:54
Quote Anchor link
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.
 
Ron -

Ron -

16/10/2010 10:06:18
Quote Anchor link
Ja, ik had idd al gezien dat het veel makkelijker kan met DAY/MONTH/YEAR. Dit heb ik dan ook gebruikt.

Hartelijk bedankt voor de hulp
 
Milo S

Milo S

16/10/2010 13:58:28
Quote Anchor link
Of je doet wat Aad zegt gewoon in 1 keer...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$qry
= "SELECT
            veld1,
            DATE_FORMAT(birthday,'%d-%m-%Y') AS datum,
            veld2,
            veld3
        FROM
            members"
;

# Foutafhandeling hier. Niet vergeten he!
?>
 
Kumkwat Trender

Kumkwat Trender

16/10/2010 14:07:27
Quote Anchor link
Noppes Homeland op 15/10/2010 21:15:24:


lol
 
Aad B

Aad B

16/10/2010 17:04:02
Quote Anchor link
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.
 
Noppes Homeland

Noppes Homeland

16/10/2010 17:25:56
Quote Anchor link
@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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.