Datum- en Tijdfuncties in MySQL

  1. Inleiding
  2. Datum- en tijdtypes
  3. Invoegen van data en tijden
  4. Uitlezen van data en tijden
  5. Functies voor het weergeven van specifieke informatie
  6. Rekenen met data en tijden
  7. Data in Engels of Nederlands formaat
  8. Slotwoord en referenties
  9. Reacties op deze tutorial

Data in Engels of Nederlands formaat

Zoals al aangegeven in het hoofdstuk over het uitlezen van de data uit de database, is het mogelijk om je data in een eigen formaat te zetten. Nu zijn er ook specifiers die de dag en maand als complete tekst weer kunnen geven.

Voorbeeld 20: Weergeven van de datum in het Engels.
Code
1
2
SELECT DATE_FORMAT(datumtijdveld, '%W %M %D %Y') AS datum
FROM tabel

Dit zal de datum weergeven als 'Tuesday July 10th 2007'. Natuurlijk kun je hier zelf nog mee spelen.

Voor het weergeven van de datum in het Nederlands, kun je proberen de local settings van de database te wijzigen. Deze setting is pas beschikbaar in versies 4.1.21, 5.0.25 en 5.1.12. Bij eerdere versies uit de 4.x, 5.0.x en 5.1.x series is dit dus geen optie. Kijk voor een alternatieve oplossing naar voorbeeld 22 of 23.

Voorbeeld 21: Weergeven van de datum in het Nederlands
Code
1
SET lc_time_names = 'nl_NL'

Deze query gebruik je om de locale settings te wijzigen. Vervolgens worden de namen van dagen en maanden met DATE_FORMAT() nu in het nederlands weergegeven.
Code
1
2
SELECT DATE_FORMAT(datumtijdveld, '%W %d %M %Y') AS datum
FROM tabel

De weergave zou nu als volgt moeten zijn: 'dinsdag 10 juli 2007'. (Voor meer informatie over deze optie, zie de MySQL handleiding.)

Mocht het op deze manier niet lukken, dan zul je iets meer moeten doen. Er zijn dan twee oplossingen over. In de eerste wordt wel gebruik gemaakt van wat PHP maar wellicht is deze beter te begrijpen dan de tweede.

Voorbeeld 22: Weergeven van de datum in het Nederlands met PHP.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
// Arrays gebruikt voor het weergeven van Nederlandse namen
$weekdagen = array('zondag''maandag''dinsdag''woensdag''donderdag''vrijdag''zaterdag');
$maanden = array('januari''februari''maart''april''mei''juni''juli''augustus''september''oktober''november''december');

// SQL query om benodigde gegevens uit de database te halen.
$sql "
    SELECT
        DAYOFWEEK(datumveld) AS weekdag,
        MONTH(datumveld) AS maand,
        DAYOFMONTH(datumveld) AS dag
        YEAR(datumveld) AS jaar
    FROM
        tabel
    "
;

// Contorle of query gelukt is en eventueel foutafhandeling toepassen.
if(!$res mysql_query($sql))
{
    
trigger_error(mysql_errno().': '.mysql_error());
}
else
{
    
// Fetchen van gegevens en combineren tot resultaat
    
$row mysql_fetch_assoc($res);
    
$datum $weekdagen[$row['weekdag']].' '.$row['dag'].' '.$maandag[$row['maand']].' '.$row['jaar'];
}
?>

Het formaat waarin de datum nu komt te staan is bijvoorbeeld: 'dinsdag 10 juli 2007'.

Maar het kan ook alleen met de database, en dat is eigenlijk waar deze hele tutorial wel om draait. Zo min mogelijk met PHP werken als het gaat om data en tijden.

Voorbeeld 23: Weergeven van de datum in het Nederlands met MySQL
Code
1
2
3
4
5
6
7
8
9
10
SELECT CONCAT(
    ELT(DAYOFWEEK(datumveld), 'zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'),
    ' ',
    DAYOFMONTH(datumveld),
    ' ',
    ELT(MONTH(datumveld), 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'),
    ' ',
    YEAR(datumveld)
) AS datum_NL
FROM tabel

In deze query maken we gebruik van ELT() om de functie van de array's uit de PHP code te vervangen en CONCAT() om alles aan elkaar te plakken. Eigenlijk werkt het precies hetzelfde en bovendien is het een stuk korter.

Vorige Volgende