Versio

Datum in Nederlands vanuit SQL

De meeste mensen die met een datum in SQL werken willen deze natuurlijk netjes in het Nederlands weergeven zonder tussenkomst van PHP. Nu is het niet zo moeilijk om 'dd-mm-yyyy' te maken (dit kan met DATE_FORMAT), maar een uitgeschreven datum als 'maandag 02 januari 2006' wordt helaas nog te vaak onnodig met PHP gedaan. Bij deze de SQL oplossing.

Deze oplossing heb ik in een forumtopic gepost maar lijkt me wel handig voor alle programmeurs.

Gesponsorde koppelingen

BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  

PHP script bestanden

  1. datum-in-nederlands-vanuit-sql

 

15 reacties op 'Datum in Nederlands vanuit SQL'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Arjen Halma
Arjen Halma
7 jaar geleden
 
0 +1 -0 -1
Wat is de voordeel van SQL ipv Php de datum uit laten rekenen?
PHP erik
PHP erik
7 jaar geleden
 
0 +1 -0 -1
Sneller, makkelijker, overzichtelijker, onafhankelijker; je kunt het gebruiken om iets te selecteren zonder PHP, dus je kunt het in een stored procedure zetten of gewoon in bijvoorbeeld phpMyAdmin gebruiken.

Er zullen vast mensen zijn die liever een PHP functie gebruiken en die moeten dat dan gewoon blijven doen. Script is niet direct bedoeld als vervanging van huidige functies, maar als een extra optie.
Grean
Grean
7 jaar geleden
 
0 +1 -0 -1
Hij werkt goed ;)
Frank -
Frank -
7 jaar geleden
 
0 +1 -0 -1
Hier nog een variant op bovenstaande query, maar dan zonder de vele date_format() functies en met ELT(). Wanneer je ELT gebruikt, heb je niet de vele WHEN-ELSE's nodig. Dat scheelt weer tikwerk.

Tip: Zorg er ALTIJD voor dat de alias anders is dan het origineel. Dus niet: AS datum, maar AS datumNL. Dan kun je nog sorteren op het veld 'datum', dat lukt niet meer nadat je de boel hebt opgemaakt. Augustus komt dan eerder dan januari...

Edit: Zoal je ziet is de functie date_format() vervangen door een aantal andere datum-functies. DAYOFWEEK, DAY, MONTH en YEAR zijn de gelukkigen. DAY stamt af van DAYOFMONTH en kun je dus ook gebruiken.

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
SELECT
  CONCAT(
    ELT(DAYOFWEEK(datum),
      'zondag',
      'maandag',
      'dinsdag',
      'woensdag',
      'donderdag',
      'vrijdag',
      'zaterdag'),
    ' ',
    DAY(datum),
    ' ',
    ELT(MONTH(datum),
      'januari',
      'februari',
      'maart',
      'april',
      'mei',
      'juni',
      'juli',
      'augustus',
      'september',
      'oktober',
      'november',
      'december'),
    ' ',
    YEAR(datum)
  ) AS datumNL
FROM
  test
PHP erik
PHP erik
7 jaar geleden
 
0 +1 -0 -1
Handig.
K i p
K i p
7 jaar geleden
 
0 +1 -0 -1
Hoppakee, die gaat bij favorieten :-D

Thx for sharing!
Robert Deiman
Robert Deiman
7 jaar geleden
 
0 +1 -0 -1
Inderdaad, mooie functie, maar ik heb wel even een vraagje:

Stel ik doe een site in verschillende talen (om alleen maar even een voorbeeldje te noemen) en wil dus ook de Datum op verschillende manieren weergeven.
Is het dan niet gemakkelijker om de PHP variant te gebruiken met arrays?

(ik stel de vraag hier, omdat iemand misschien hier een voorbeeld neer kan zetten, zodat anderen die dit script zien dat ook meteen mee kunnen nemen)
K i p
K i p
7 jaar geleden
 
0 +1 -0 -1
Zoiets?

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
$talen
= array(
    Nederlands => array (
        0 => 'zondag'
        1 => 'maandag'
        2 => 'dinsdag'
        3 => 'woensdag'
        4 => ''
        5 => ''
        6 => ''
    )
    Frans =>    array(
        0 => 'dimanche'
        1 => 'lundi'
        2 => 'mardi'
        3 => 'mercredi'
        4 => 'jeudi'
        5 => 'vendredi'
        6 => 'samedi'
    )
);



$sql = "
SELECT
    CONCAT(    
        (CASE DATE_FORMAT(datum, '%w')
        WHEN '0' THEN '"
.$talen[$_SESSION['taal']][0]."'
        WHEN '1' THEN '"
.$talen[$_SESSION['taal']][1]."'
        WHEN '2' THEN '"
.$talen[$_SESSION['taal']][2]."'
        WHEN '3' THEN '"
.$talen[$_SESSION['taal']][3]."'
        WHEN '4' THEN '"
.$talen[$_SESSION['taal']][4]."'
        WHEN '5' THEN '"
.$talen[$_SESSION['taal']][5]."'
        WHEN '6' THEN '"
.$talen[$_SESSION['taal']][6]."'
        END),
        ' ',
        (DATE_FORMAT(datum, '%d')),
        ' ',
        (CASE DATE_FORMAT(datum, '%c')
        WHEN '1' THEN 'januari'
        WHEN '2' THEN 'februari'
        WHEN '3' THEN 'maart'
        WHEN '4' THEN 'april'
        WHEN '5' THEN 'mei'
        WHEN '6' THEN 'juni'
        WHEN '7' THEN 'juli'
        WHEN '8' THEN 'augustus'
        WHEN '9' THEN 'september'
        WHEN '10' THEN 'oktober'
        WHEN '11' THEN 'november'
        WHEN '12' THEN 'december'
        END),
        ' ',
        (DATE_FORMAT(datum, '%Y'))
    ) AS datum        
FROM tabel"
;

$query = mysql_query($sql) or trigger_error(mysql_error());

while ($row = mysql_fetch_assoc($query))
{

     echo $row['datum'] . '<br>';
}


?>
Robert Deiman
Robert Deiman
7 jaar geleden
 
0 +1 -0 -1
Wow, Boris, dat was precies wat ik bedoelde, en het is niet veel anders dan de PHP versie, en zeker niet veel moeilijker :)
En het lijkt hier ook gewoon te werken, dus dat is helemaal top :) (zo is het ook mooi talen toevoegen, net als met de PHP versie)
Ik zet hem in de favorieten :)
K i p
K i p
7 jaar geleden
 
0 +1 -0 -1
Wow, dat is de meest enthousiaste reactie die ik heb gehoord van iemand voor wie ik een kleine ini-mini snippet heb gemaakt!

Graag gedaan!
Melkweg
melkweg
7 jaar geleden
 
0 +1 -0 -1
Vast een domme vraag (ben nog niet zo'n php freak). Maar wat moet ik nu precies in de database zetten dan?

Hoe kan ik dit script nou "precies" gebruiken?
Kumkwat Trender
Kumkwat Trender
7 jaar geleden
 
0 +1 -0 -1
Dit script is toch om het datum te weergeven?

Hoezo gebruik je niet makkelijkere scriptjes?
Melkweg
melkweg
7 jaar geleden
 
0 +1 -0 -1
Omdat ik heel graag wil leren :-)
Kumkwat Trender
Kumkwat Trender
7 jaar geleden
 
0 +1 -0 -1
ok
Roel van de Water
Roel van de Water
3 jaar geleden
 
0 +1 -0 -1
Leuk dit maar ik doe het toch liever met een date() en een kleine array. Scheelt je typwerk.

Oh, dit script schijnt al 3 jaar oud te zijn. Laat maar zitten dan..

Om te reageren heb je een account nodig en je moet ingelogd zijn.

  • Details
  • PHP erik
    Door:
    PHP erik
  • 7 jaar geleden
  • 2.409 x bekeken
  • Labels
  • Geen tags toegevoegd.