[MySql] DATE() en Leeftijd

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Niek Ha

Niek Ha

08/09/2008 20:39:00
Quote Anchor link
Goedeavond,

Ik zit wat te knutselen met het berekenen van leeftijd.
Zoekende naar iets, waar ik vaag wel van weet dat het kan maar niet meer precies hoe. Zal het even uitleggen:

Ik heb in mijn database een veld staan waar een geboortedatum staat. Deze heeft als type; date.

Nu wil ik het liefst de leeftijd berekenen in een query.

Dit is wat ik nu heb:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

$datum
= date('Y-d-m');
            
                    $query = "
                        SELECT
                        *,
                        ("
.$datum." - leden_geboortedatum ) AS leeftijd
                        FROM
                        vvs_leden
                        WHERE
                        leden_id = "
.$spelerid."
                        "
;

?>
 
PHP hulp

PHP hulp

22/12/2024 06:12:16
 
Frank -

Frank -

08/09/2008 20:47:00
Quote Anchor link
Zie de MySQL-handleiding, daar staat ergens een fraaie query waar men de leeftijd berekend van huisdieren. Zoek maar even op AGE en PETS, dan kom je er wel.

Ps. Ga niet in PHP een datum aanmaken wanneer de database dat zelf ook kan: CURRENT_DATE. Dat voorkomt problemen met verschillende klokken en tijdzones.
 
Robert Deiman

Robert Deiman

08/09/2008 20:50:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT FLOOR(DATEDIFF(CURRENT_DATE(),leden_geboortedatum )/365) AS leeftijd


pgFrank schreef op 08.09.2008 20:47:
Zie de MySQL-handleiding, daar staat ergens een fraaie query waar men de leeftijd berekend van huisdieren. Zoek maar even op AGE en PETS, dan kom je er wel.

Ps. Ga niet in PHP een datum aanmaken wanneer de database dat zelf ook kan: CURRENT_DATE. Dat voorkomt problemen met verschillende klokken en tijdzones.


Het is overigens CURDATE()

edit:
Die query van de SQL handleiding kan ook, al is deze denk ik wel duidelijker, maar welke sneller is weet ik niet, heb ik ook niet getest
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 
Frank -

Frank -

08/09/2008 20:57:00
Quote Anchor link
Robert_Deiman schreef op 08.09.2008 20:50:
Het is overigens CURDATE()

En dan uit de MySQL-handleiding:
Quote:
CURRENT_DATE and CURRENT_DATE() are synonyms for CURDATE().


En wanneer je dan naar de SQL-standaard kijkt (volgens PostgreSQL):
Quote:
PostgreSQL provides a number of functions that return values related to the current date and time. These SQL-standard functions all return values based on the start time of the current transaction:

CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_TIME(precision)
CURRENT_TIMESTAMP(precision)
LOCALTIME
LOCALTIMESTAMP
LOCALTIME(precision)
LOCALTIMESTAMP(precision)

Dan zie je dat CURRENT_DATE door beide databases wordt ondersteund. Dan is het wel zo handig om jezelf die standaard aan te leren, loop je nooit te klooien met de verkeerde functie/constante.

Ik zuig het niet helemaal uit mijn duim...
 
Niek Ha

Niek Ha

08/09/2008 20:57:00
Quote Anchor link
Ok, het is gelukt.
Bedankt voor jullie hulp.
 
Robert Deiman

Robert Deiman

08/09/2008 20:59:00
Quote Anchor link
Sorry Frank :P Mijn nederige excuses, had beter moeten weten.. ;)

Neej ik zie dat je gelijk hebt, ik pas bovenstaande nog even aan met current_date dan.
 



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.