Nederlandse en Engelse notatie
Er zijn ook specifiers voor datumtijd als tekst, maar die zijn helaas allemaal in het Engels. Als je %b gebruikt, krijg je de afgekorte maandnaam (Jan ... Dec) en met %M de volledige (January ... December). MySQL kent bij mijn weten geen set_locale, maar die van PHP werkt ook niet altijd en overal. Als je dus graag dingen wilt laten zien als "vrijdag 11 mei 2006" moet je twee arrays aanmaken met weekdagnamen en maandnamen.
In PHP gebruiken we hiervoor setlocale (LC_ALL, 'nl_NL'); Helaas werkt die niet op alle servers.
Voorbeeld 4: Nederlandse notatie voor dagen en maanden
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$weekdagnamen = array (zondag, maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag);
$maandnamen = array (1 => januari, februari, maart, april, mei, juni, juli, augustus, september, oktober, november, december);
$sql = "
SELECT
DATE_FORMAT(datumtijdveld, '%w') AS dag,
DATE_FORMAT(datumtijdveld, '%d') AS datum,
DATE_FORMAT(datumtijdveld, '%c') AS maand,
DATE_FORMAT(datumtijdveld, '%Y') AS jaar
FROM tabel
ORDER BY datumtijdveld
";
$res = mysql_query ($sql) or die (mysql_error ());
while ($obj = mysql_fetch_object ($res)) {
echo '<p>' . $weekdagnamen[$obj->dag] . ' ' . $obj->datum . ' ' . $maandnamen[$obj->maand] . ' ' . $obj->jaar . '</p>';
}
?>
Als je het niet erg vindt dat de notatie in het Engels is, wordt de query veel simpeler.
Voorbeeld 5: Engelse notatie voor dagen en maanden
2
3
4
5
6
7
8
9
10
11
12
13
$sql = "
SELECT
DATE_FORMAT(datumtijdveld, '%w %d %c %Y') AS datum
FROM tabel
ORDER BY datumtijdveld
";
$res = mysql_query ($sql) or die (mysql_error ());
while ($obj = mysql_fetch_object ($res)) {
echo '<p>' . $obj->datum . '</p>';
}
?>