login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > MySQL


Gegevens:
Geschreven door:
marten
Moeilijkheidsgraad:
Normaal
Hits:
15985
Punten:
Aantal punten:
 (4.67)
Aantal stemmen:
3
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (7)
 



Tutorial:

Datum en tijd in MySQL [deel 2: Functies]

Inleiding
ADDDATE & ADDTIME
Welke dag was ......?
unix timestamps
ADDTIME / ADDDATE andersom :)
Conclusie

Inleiding

Na de eerste tutorial is hier de tweede in de reeks date en time functies van MySQL. In deze tutorial wil ik weer een aantal erg handige MySQL functies toelichten. Hopelijk heeft u er wat aan.
 
pijl top
 

ADDDATE & ADDTIME

De eerste functies die ik wil gaan behandelen zijn ADDDATE en ADDTIME.

ADDDATE


Je kan met deze functie x units toevoegen aan een datum. Je kan zelf wel nagaan in welke situaties je dit kan gebruiken. Het gebruik is als volgt:
 
ADDDATE(date,INTERVAL expr unit)
ADDDATE(expr,days)
 
De tweede gebruiksvorm gaat uit dat je dagen gebruikt. Dus voorbeeld:
SELECT ADDDATE('2006-01-01', 31); geeft dus 2006-02-01
 
Het eerste kan je als volgt gebruiken:
SELECT ADDDATE('2006-01-01', INTERVAL 1 year); geeft dus 2007-01-01
 

ADDTIME


Dit is ongeveer dezelfde functie als ADDDATE maar, je raad het al, gebruikt men dit met tijden.
Gebruik als volgt:
SELECT ADDTIME(expr1,expr2);
 
Voorbeeld: 
SELECT ADDTIME('1997-12-31 23:59:59','1 1:1:1');
 
Het voorbeeld voegt dus 1 dag, 1 uur, 1 minute en 1 seconde toe aan 1997-12-31 23:59:59. De expressies moeten van date of datetime formaat zijn.
 
unit kan je vervangen door de volgende waardes. Er zijn nog een aantal maar die kan je terug vinden manual
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK*
MONTH
QUARTER*
YEAR
 
* -> Deze zijn beschikbaar vanaf MySQL 5.0
 
pijl top
 

Wat was de dag op .....

Wie kent de generators niet die uitrekenen op welke dag je vorig jaar of 80 jaar geleden jarig zou zijn. MySQL heeft hier verschillende functies voor. Ik zal ze hieronder behandelen.
DAYNAME(date)
Geeft de naam van de dag terug. Dus bijvoorbeeld SELECT DAYNAME('2006-05-05'); geeft Friday.
 
DAYOFWEEK(date)
Geeft het nummer van de dag in die week terug. Dus bijvoorbeeld SELECT DAYOFWEEK('2006-05-05'); geeft 6 terug. Hier rekent men vanaf zondag! Dus zondag = 1, maandag = 2, dinsdag = 3 enz.enz.
 
DAYOFMONTH(date)
Geeft het nummer van de dag in die maand terug. Voor deze functie kan je ook DAY() gebruiken.
 
DAYOFYEAR(date)
Geeft het nummer van de dag in dat jaar terug.
 
 
Dit zijn dus erg handige functies.

 
pijl top
 

Unix Timestamp functies

Op verzoek van Scotty ook een aantal unix timestamps functies.
Vele mensen werken met timestamps. In mijn vorige tutorial heeft u misschien gelezen dat deze niet is ontworpen voor datum en tijd functies. MySQL heeft hier wel een aantal functies voor ontworpen. Wie kent het probleem niet om een timestamp om te rekenen naar een datum? Hier zullen vele gebruikers van timestamps een standaard php code voor hebben. Maar je kan je parsetijd dus verminderen door de volgende functie te gebruiken.

FROM_UNIXTIME


Je kan met deze functie een timestamp omrekenen naar een datum. Het gebruik van deze functie is vrij gemakkelijk. Namelijk:
SELECT FROM_UNIXTIME('timestamp');
 
Dit geeft dus de Engelse weergave van een datum. In mijn vorige tutorial heb ik de functie DATE_FORMAT gebruikt. Deze functie kan je verwerken in de FROM_UNIXTIME functie. Zo kan je dus gelijk de Nederlandse weergave genereren.
Dit doen we als volgt:
SELECT FROM_UNIXTIME('timestamp', %T '%d-%m-%Y' );
 
Dit geeft dus de Nederlandse weergave van een datum. Dat is best lange functie en weet u alle date_formats uit uw hoofd? Ik niet in ieder geval. Hierover hebben ze ook nagedacht bij MySQL. Ze hebben de functie GET_FORMAT(date, format) bedacht. Je kan hiermee erg makkelijk omrekenen. Wil je het resultaat als bovenstaand voorbeeld krijgen met deze functie? Probeer dit eens:
SELECT GET_FORMAT('timestamp', 'EUR' );
 
Je kan voor format de volgende waardes gebruiken. Daarachter vind u het resultaat.
Functie Resultaat
GET_FORMAT(DATE,'USA') '%m.%d.%Y'
GET_FORMAT(DATE,'JIS') '%Y-%m-%d'
GET_FORMAT(DATE,'ISO') '%Y-%m-%d'
GET_FORMAT(DATE,'EUR') '%d.%m.%Y'
GET_FORMAT(DATE,'INTERNAL') '%Y%m%d'
GET_FORMAT(DATETIME,'USA') '%Y-%m-%d %H.%i.%s'
GET_FORMAT(DATETIME,'JIS') '%Y-%m-%d %H:%i:%s'
GET_FORMAT(DATETIME,'ISO') '%Y-%m-%d %H:%i:%s'
GET_FORMAT(DATETIME,'EUR') '%Y-%m-%d %H.%i.%s'
GET_FORMAT(DATETIME,'INTERNAL') '%Y%m%d%H%i%s'
GET_FORMAT(TIME,'USA') '%h:%i:%s %p'
GET_FORMAT(TIME,'JIS') '%H:%i:%s'
GET_FORMAT(TIME,'ISO') '%H:%i:%s'
GET_FORMAT(TIME,'EUR') '%H.%i.%s'
GET_FORMAT(TIME,'INTERNAL') '%H%i%s'
 
U kunt voor de eerste waarde van deze functie ook een unix timestamp gebruiken! Handig he ;-)  

 
pijl top
 

ADDTIME andersom :)

In het begin van deze tutorial hebben we gekeken naar een aantal functies om tijd en datums toe te voegen. Maar je wilt er dus ook weleens tijd aftrekken. Hiervoor zijn de functies SUBTIME en SUBDATE. De werking is hetzelfde als bij ADDTIME en ADDDATE.  

 
pijl top
 

Conclusie

Tot zover het tweede deel van de date en timefuncties van MySQL. Heeft u vragen en/of opmerkingen ? Laat een reactie achter

« Vorige tutorial : Datum en tijd in MySQL [deel 1] Volgende tutorial : MySQL Error Handling »

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.015s