Ik wil met onderstaande query de verjaardagen van deze week halen, behalve vandaag. Maar helaas lukt het niet om de verjaardagen van vandaag over te slaan.

Weet iemand een manier? Die ook werk bij de schrikkeljaren en jaren voor 1970?

SELECT *, 
DAYOFMONTH ( datum ) AS dag, 
MONTH ( datum ) AS maand, 
(YEAR( CURRENT_DATE( ) ) - YEAR(datum)) AS leeftijd
FROM `verjaardag`  
WHERE 
 ( 
	DAYOFYEAR( CURRENT_DATE( ) ) > DAYOFYEAR( DATE_SUB( datum, INTERVAL 7 DAY ) ) 
	AND DAYOFYEAR( CURRENT_DATE( ) ) <= DAYOFYEAR( DATE_SUB( datum, INTERVAL 7 DAY ) ) +7
 )
OR 
 (
	DAYOFYEAR( CURRENT_DATE( ) ) > DAYOFYEAR( datum ) -7
	AND DAYOFYEAR( CURRENT_DATE( ) ) <= DAYOFYEAR( datum )
 )
ORDER BY maand, dag, leeftijd ASC
Okee, graag gedaan :-)
Ik zou deze code willen gebruiken om op mijn site de volgende wedstrijden aan te kondigen.
Mijn output is :

Volgende speeldag
2015-01-14-18:00:00-Elite-Wit - Groen
2015-01-14-18:30:00-U11-Geel - Rood
2015-01-16-18:00:00-U7-Geel - Oranje
2015-01-16-18:00:00-U21-Groen - Paars
2015-01-16-18:00:00-U11-Bruin - Wit
2015-01-16-19:30:00-U8-Zwart - Grijs
2015-01-16-22:00:00-Elite-Oranje - Geel


Nu zou ik het graag zo hebben dat het per kalenderdag gegroepeerd wordt, gesorteerd op uur en reeks.

D d F Y
uur (00:00)- Reeks - thuisploeg - Bezoekers
uur (00:00)- Reeks - thuisploeg - Bezoekers
uur (00:00)- Reeks - thuisploeg - Bezoekers
.....

D d F Y
uur (00:00)- Reeks - thuisploeg - Bezoekers
uur (00:00)- Reeks - thuisploeg - Bezoekers
.....

Kan iemand mij hiermee helpen?
Hoe kan ik de datum in het nederlands krijgen en het uur zonder de seconden.
Alvast bedankt voor de hulp.



<?php

// Create connection
$conn = new mysqli($host, $username, $password, $db);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT id, datum, uur, reeks, thuisploeg, bezoekers,   CONCAT( YEAR( CURDATE( ) ) , DATE_FORMAT( datum, '-%m-%d' ) )
FROM wedstrijden
WHERE CONCAT( YEAR( CURDATE( ) ) , DATE_FORMAT( datum, '-%m-%d' ) )
BETWEEN DATE_ADD( CURDATE( ) , INTERVAL 1
DAY )
AND DATE_ADD( CURDATE( ) , INTERVAL 8
DAY)
ORDER BY `datum` ASC, `uur` ASC, `reeks` DESC ";

$result = $conn->query($sql);
echo "Volgende speeldag<br>";
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
	
        echo "" . $row["datum"]. "-" . $row["uur"]."-" . $row["reeks"]."-" . $row["thuisploeg"]." - " . $row["bezoekers"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?> 
Controleer of de datum wijzigt en, zo ja, toon dan een kopje. Bijvoorbeeld:


<?php
$result = $conn->query($sql);
echo "Volgende speeldag<br>";
if ($result->num_rows > 0) {
    $date_heading = '';
    while($row = $result->fetch_assoc()) {
        if ($date_heading != $row['datum']) {
            echo '<h3>' . $row['datum'] . '</h3>';
            $date_heading = $row['datum'];
        }
        echo "" . $row["datum"]. "-" . $row["uur"]."-" . $row["reeks"]."-" . $row["thuisploeg"]." - " . $row["bezoekers"]. "<br>";
    }
} else {
    echo "0 results";
}
?>
Koshi koshi op 12/01/2015 22:42:54

Ik zou deze code willen gebruiken om op mijn site de volgende wedstrijden aan te kondigen.

Ik zie het verband niet tussen verjaardagen en een wedstrijdprogramma.
Ik denk dat je beter een nieuw topic kan starten.

Daarnaast is de hier geboden oplossing niet correct.

WHERE CONCAT(YEAR(CURDATE()) , DATE_FORMAT(geboortedatum, '-%m-%d'))
BETWEEN DATE_ADD(CURDATE() , INTERVAL 1 DAY) AND DATE_ADD(CURDATE() , INTERVAL 8 DAY)

Dit zal van 24 t/m 31 december onjuiste resultaten opleveren, als bv op 30 december 2014 dit wordt uitgevoerd, krijgt iemand geboren op 1980-01-02 de datum 2014-01-02, hetgeen resulteert in

WHERE '2014-01-02' BETWEEN '2014-12-31' AND '2015-01-06'


De oplossing is om een serie met datums te generen en dan de tabel te joinen op maand-dag:

SELECT
	u.first_name,
	u.last_name,
	d.ref_date,
	TIMESTAMPDIFF(YEAR, u.birth_date, d.ref_date) age
FROM
	(
	SELECT
		@ref_date := @ref_date + INTERVAL 1 DAY ref_date
	FROM
		(SELECT 1 x UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
		 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7) s
	CROSS JOIN
		(SELECT @ref_date := CURRENT_DATE) v
	) d
JOIN
	users u
	ON DATE_FORMAT(d.ref_date, '%m-%d') = DATE_FORMAT(u.birth_date, '%m-%d')


Ik weet dat dit al een oud topic is, maar dit verjaart niet.


Reageren