Ik wil graag records selecteren op datum, waarbij ik alle records wil hebben waar kolom 'datum' een datum in een bepaalde maand bevat, uiteraard ook alleen die van een bepaald jaar. Welke query moet ik daarvoor nemen?

Ik doe nu dit:

<?php

$sql = "SELECT * FROM tabel WHERE datum LIKE '".$jaar."-".$maand."%'";

?>

Maar hierbij kom ik in de problemen als de maand kleiner is dan 10 en niet met een 0 begint, dan selecteerd hij namelijk geen records meer...

[edit]399 posts...[/edit]
$sql = "SELECT * FROM tabel WHERE datum LIKE '".$jaar."-".$maand."-%'";

Let op het - teken wat nu voor de % staat, dan krijg je dus:

WHERE datum LIKE 2006-1-%

Zou moeten werken dacht ik zo.
werkt niet
Hoezo werkt het niet?
Wat krijg je voor error, en als je je query echo't, wat krijg je dan?
Geen errors, maar hij selecteerd niks.

Dit is de query:

SELECT * FROM tabel WHERE datum LIKE '2006-6-%' ORDER BY datum

Maar hij zou moeten zijn:

SELECT * FROM agenda WHERE datum LIKE '2006-06-%' ORDER BY datum

(die 0 voor de 6)

Het is voor een agenda waar je met vorige/volgende een andere maand kunt pakken, die maand gaat dan in de get-variabelen. Als ik 06 in de var stop doet hij het, maar als ik 06 min 1 doen komt er 5 uit en daarmee selecteert hij niks.
Oh, je hebt er zelf wel 06 in staan, had ik verkeerd begrepen..

if(strlen($maand) == 1){
$maand=0.$maand;
}

werkt wel zo, als het goed is.. maar verder...
Ja, maar welke datumfunctie :S Ik word echt niks wijzer uit zo'n berg informatie :$

[edit]Ik heb hem:

SELECT * FROM tabel WHERE DATE_ADD(datum, INTERVAL 1 MONTH) > ".strftime("%Y%m%d%H%M%S", mktime(00,00,00,$maand,01,$jaar))." ORDER BY datum

[/edit]
Hmm, ik dacht hem te hebben (zie vorige post), maar hiermee neemt ie alle dingen van deze maand en later en die van de maand ervoor.

edit: nu heb ik dit:

SELECT datum FROM tabel WHERE DATE_ADD(datum, INTERVAL 0 MONTH) > ".strftime("%Y%m%d%H%M%S", mktime(00,00,00,$maand,01,$jaar))." ORDER BY datum

Daarmee neemt ie van deze maand en later.

SELECT
  datum
FROM
  tabel
WHERE
  YEAR(datum) = YEAR(CURDATE())
AND
  MONTH(datum) = MONTH(CURDATE())
ORDER BY
  datum ASC

Maak gebruik van de functies YEAR en MONTH, dat vind ik zelf veel handiger.
Ok, ik heb nu dit:


SELECT
	*
FROM
	tabel
WHERE
	YEAR(datum) = ".$jaar."
AND
	MONTH(datum) = ".$maand."
ORDER BY
	datum


Zo werkt het perfect. Bedankt iedereen!

Reageren