Datum in Nederlands vanuit SQL

Door PHP erik, 18 jaar geleden, 8.545x bekeken

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

PHP script bestanden

  1. datum-in-nederlands-vanuit-sql

 

Er zijn 15 reacties op 'Datum in nederlands vanuit sql'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Arjen Halma
Arjen Halma
18 jaar geleden
 
0 +1 -0 -1
Wat is de voordeel van SQL ipv Php de datum uit laten rekenen?
PHP erik
PHP erik
18 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
18 jaar geleden
 
0 +1 -0 -1
Hij werkt goed ;)
Frank -
Frank -
18 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
18 jaar geleden
 
0 +1 -0 -1
Handig.
K i p
K i p
18 jaar geleden
 
0 +1 -0 -1
Hoppakee, die gaat bij favorieten :-D

Thx for sharing!
Robert Deiman
Robert Deiman
18 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
18 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
18 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
18 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
17 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
17 jaar geleden
 
0 +1 -0 -1
Dit script is toch om het datum te weergeven?

Hoezo gebruik je niet makkelijkere scriptjes?
Melkweg
melkweg
17 jaar geleden
 
0 +1 -0 -1
Omdat ik heel graag wil leren :-)
Kumkwat Trender
Kumkwat Trender
17 jaar geleden
 
0 +1 -0 -1
ok
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Roel -
Roel -
14 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.

Inhoudsopgave

  1. datum-in-nederlands-vanuit-sql

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.