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.
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
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.
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 ;-)
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.
top
Conclusie
Tot zover het tweede deel van de date en timefuncties van MySQL. Heeft u vragen en/of opmerkingen ? Laat een reactie achter
|