Hey phpers,

Ik zoek een functie als explode maar dan voor mysql.
Ik wil nl een where met een jaar die in de datum staat.
Dus de datum staat gewoon als 2007-01-18 in de database. en daarvan wil ik het jaar in een where.
Bijv. Select * where datumjaar[0](explode("-",datum))=2007.

Bvd!
WHERE YEAR(datum) = 2007
Oh dat is simpeler dan ik dacht. maar je moet het maar net weten he :)
Bedankt! het wil alleen nog niet echt lukken. Misschien dat iemand hier een idee heeft. Ik heb o.a. datums en weken in de db en daarmee wil ik de rest van de data sorteren. Dit ging prima totdat het 2007 werd en ik data van 2006 en 2007 nodig heb. Nou heb ik het allemaal al toegevoegt maar moet alleen nog de juiste query hebben. Deze is nu:

SELECT iets FROM iets WHERE week >= '".$week1."' && week <= '".$week2."' && YEAR(datum) >= ".$jaar1." && YEAR(datum) <= ".$jaar2.""
Nou heb ik de weken en jaren enzo al een aantal keer verplaatst maar lijkt niet veel te helpen.
Als iemand een idee/oplossing weet, graag.
Turmin schreef op 18.01.2007 21:27
Oh dat is simpeler dan ik dacht. maar je moet het maar net weten he :)

Als je het nog niet weet heb je daarvoor de MySQL handleiding: klik

Maar ontoppic:
&& is dat SQL moet dat niet AND zijn?
SELECT iets FROM tabel WHERE week BETWEEN week1 AND week2 AND jaar BETWEEN jaar1 AND jaar2

gebruik btw AND OR XOR ipv && || de eerstgenoemde zijn het sterkts

[edit] && || enz mogen wel BTW[/edit]
Bedankt voor je reactie, maar werkt nog niet zoals het hoort.

SELECT blabla FROM blabla WHERE week BETWEEN ".$week1." AND ".$week2." AND YEAR(datum) BETWEEN ".$jaar1." AND ".$jaar2."

Dit wordt als output: WHERE week BETWEEN 01 AND 03 AND YEAR(datum) BETWEEN 2006 AND 2007

Ik krijg dan week 1 tm 3 van 2007, niets van 2006. als de eerste week boven de 3 komt, krijg ik niks (dan is er geen data van 2007 natuurlijk, maar eigenlijk moet er dan data van 2006 tm 't einde van 2007)
Wat doen die weeknummers in jouw tabel? Een datum heeft een weeknummer al in zich, met de functie WEEK() kun je deze zo opvragen. Dit hoor je dus niet nogmaals op te slaan, dit gaat gegarandeerd verkeerd.

Zie wederom de MySQL-handleiding, hoofdstuk 12.5
Er was iets waardoor ik dat had gedaan. Maar ik zal eens proberen het te vervangen met die functie. Maar dan wordt de query:
SELECT blabla FROM blabla WHERE WEEK(datum) BETWEEN ".$week1." AND ".$week2." AND YEAR(datum) BETWEEN ".$jaar1." AND ".$jaar2."
?
Nou heb dan bij dit:
WHERE WEEK(datum) BETWEEN 15 AND 35 AND YEAR(datum) BETWEEN 2006 AND 2007

De weken 15 tm 35 in 2006. Niks van 2007.

EDIT: en hij geeft week 1 niet meer. Hij begint bij week 2 :S
IK weet niet wat de functie BETWEEN precies doet. Maak de slectie anders een iets breder dus

"WHERE WEEK(datum) BETWEEN 14 AND 36 AND YEAR(datum) BETWEEN 2005 AND 2008"
Dat had ik gister al geprobeert maar maakt helaas niks uit.
EDIT: en hij geeft week 1 niet meer. Hij begint bij week 2 :S
Heb je de handleiding wel doorgelezen? Ik vermoed van niet of in elk geval niet goed doorgelezen.

De functie WEEK() kent namelijk nog een parameter waarmee je kunt aangeven wat volgens jou week 1 moet zijn. Deze parameter ontbreekt in jouw query.

Oplossing: Zie hoofdstuk 12.5 van de MySQL-handleiding.

Reageren