Op mijn localhost server werkt de volgende datum/tijd notatie perfect. Deze notatie voer ik door binnen de mysql query. Echter heeft de server waar de website draait mysql 4. Graag zou ik willen weten welk element van de notatie niet werkt en waarom dit zo is. En mocht dit echt niet werken om wat voor reden dan ook welk alternatief ik heb.

Query:
<?php
CONCAT(
(DATE_FORMAT(n.datum, '%e ')),
(CASE DATE_FORMAT(n.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(n.datum, ' %Y ')),
(DATE_FORMAT(n.datum, ' - %H:')),
(DATE_FORMAT(n.datum, '%i'))
) AS datumNL
?>
Waarom niet met strftime() ?
Marco schreef op 29.01.2010 18:59
... welk element van de notatie niet werkt ...

Foutafhandeling inbouwen dan zie je het direct.
ik gebruik dit:
<?php

# Set taal
setlocale(LC_ALL, 'nl_NL');

# Set tijdzone
date_default_timezone_set('Europe/Amsterdam');

?>

voorbeeld:

<?php
/* Output: vrijdag 22 december 1978 */
echo strftime("%A %e %B %Y", mktime(0, 0, 0, 12, 22, 1978));
?>
SanThe schreef op 29.01.2010 19:08
[quote='Marco schreef op 29.01.2010 18:59']... welk element van de notatie niet werkt ...

Foutafhandeling inbouwen dan zie je het direct.[/quote]

Het werkt wel, alleen ben ik benieuwd waarom het niet op mysql versie 4 werkt. Daarom mijn vraag welk element uit de query werkt alleen met mysql 5.

Bedankt voor de reacties ik zal het zo gaan proberen.
Helaas lukt het nog niet goed. De geimporteerde data is gedaan met de functie NOW() zoals hieronder te zien is.
<?php
$stmt = $db->prepare("
INSERT INTO
nieuws (kop, datum, bericht)
VALUES
(:kop, NOW(), :bericht)
");
?>

Hoe kan ik vervolgens (met welke query en met welk gebrui van strftime) de datum ophalen in bijvoorbeeld de notatie zoals vrijdag 22 december 1978.

Bv.d.
<?php
// sql
SELECT datum FROM nieuws WHERE .... = ....

// zelf fetchen etc en alles in $datum zetten

// bovenaan elke pagina (gewoon include in header)
setlocale(LC_ALL, 'nl_NL');

// echoed de goede tijd/datum-notatie
echo strftime("%e %B %Y", strtotime($datum));
?>
Zie ook deze snippet, en php.net: [php]setlocale[/php].

@Zunflappie: Lees eens voordat je post.
Je kunt MySQL zo instellen dat het met Nederlandse dagen en maanden werkt.

SET lc_time_names = 'nl_NL';
DATE_FORMAT(n.datum,'%e %M %Y - %H %i');
@Zunflappie: Lokaal werkt deze methode. Echter krijg ik eenmaal online de volgende error: php Invalid CRT parameters detected.

@Peter: Onderstaande (test) query werkt niet en geeft een fatal error. Is dit verkeerd geschreven? En werkt dit ook onder mysql 4?

<?php
$query = "
SET lc_time_names = 'nl_NL';
SELECT
DATE_FORMAT(n.datum,'%e %M %Y - %H %i')
FROM
nieuws n
";
?>

Reageren