Rekenen met datums
MySQL kan ook rekenen met datumtijd velden.
Stel dat je een factureersysteem hebt en dat je wilt weten wanneer de betalingstermijn van een factuur verloopt.
Voorbeeld 6: Facturen laten zien waarvan de betalingstermijn (4 weken) verlopen is.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$sql = "
SELECT factuurnummer
FROM facturen
WHERE DATE_ADD(factuurdatum, INTERVAL 28 DAY) < NOW()
AND status = 'nog niet betaald'
";
?>
$sql = "
SELECT factuurnummer
FROM facturen
WHERE DATE_ADD(factuurdatum, INTERVAL 28 DAY) < NOW()
AND status = 'nog niet betaald'
";
?>
In plaats van DAY kun je ook werken met HOUR, MINUTE, SECOND, MONTH en YEAR. Er zijn ook combinaties mogelijk, zoals DAY_HOUR, DAY_MINUTE, DAY_SECOND enzovoorts.
Zo zou je, omwille van het voorbeeld, de betalingstermijn op 4 weken plus een halve dag kunnen zetten.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$sql = "
SELECT factuurnummer
FROM facturen
WHERE DATE_ADD(factuurdatum, INTERVAL '28 12' DAY_HOUR) < NOW()
AND status = 'nog niet betaald'
";
?>
$sql = "
SELECT factuurnummer
FROM facturen
WHERE DATE_ADD(factuurdatum, INTERVAL '28 12' DAY_HOUR) < NOW()
AND status = 'nog niet betaald'
";
?>
Voorbeeld 7: Wie moet ik een verjaardagskaartje sturen?
EDIT: DIT VOORBEELD WERKT NIET GOED. IK BEN OP ZOEK NAAR EEN MOOI ALTERNATIEF
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql = "
SELECT
naam,
DATE_FORMAT(geboortedatum, '%d') AS datum
FROM kennissen
WHERE (geboortedatum - NOW()) BETWEEN 1 AND 3
";
?>
$sql = "
SELECT
naam,
DATE_FORMAT(geboortedatum, '%d') AS datum
FROM kennissen
WHERE (geboortedatum - NOW()) BETWEEN 1 AND 3
";
?>
Ik hoop dat ik je een beetje op het spoor heb gezet van de mogelijkheden van datumtijd-funkties in MySQL. Deze tut is allesbehalve compleet. Voor verdere info verwijs ik graag naar het MySQL manual. Deze link is expres niet naar de nieuwste versie, want de meeste hosts draaien nog geen MySQL 5.