Hallo,

Ik heb in mijn database een datumveld staan:
DD-MM-JJJJ
Ik wil hieruit het jaar halen (JJJJ) zodat ik een overzicht kan maken op bv. het jaar 2006.
Kan iemand mij een tip geven over waar ik naar moet kijken om dit te bewerkstelligen? Want ik weet niet echt waar ik moet beginnen hiermee, ik kan immers geen explode() of substr() gebruiken in SQL :)
SELECT YEAR(datumkolom) as jaar FROM tabel

Ik hoop overigens wel voor jou dat het veld ook echt een DATE of DATETIME veld is in de database en niet een varchar, want dan pak je het verkeerd aan.

Anders moet je de datum selecteren en een substr($datum, -4) doen...
SELECT DATE_FORMAT(jouwdate, '%Y') AS year FROM jouwtabel

Zoiets zou moeten werken

[edit]Iemand was me voor, en jouw manier is ook nog beter![/edit]
Heren, jullie hebben het niet helemaal begrepen geloof ik. Als je een overzicht wil van 2006 kan je wel YEAR() gebruiken, maar dan selecteer je alles en kan je met PHP wel gaan uitzoeken, alleen is dat niet netjes.
[edit]
Als je een overzicht op jaar wil zal je dus in je WHERE moeten kijken of het jaar uit je datum het jaar is wat je wil zien.
[/edit]
@Wout
Staat je datum echt als DD-MM-YYYY in je tabel (ik hoop het toch echt niet, dit is ten zeerste af te raden), of is het wel van het type date?
Als het wel het type date is, wat erg is aan te raden om de MySQL functies die hiervoor zijn gemaakt te kunnen gebruiken:

<?php
$jaar=2006;

$query="
SELECT
Kolom1,
Kolom2
FROM
tabel
WHERE
YEAR(datum) = '".$jaar."'";
?>
Het kan zijn dat het zonder quotes in de query moet, dan wordt die zo:
<?php
$jaar=2006;

$query="
SELECT
Kolom1,
Kolom2
FROM
tabel
WHERE
YEAR(datum) = ".$jaar;
?>
Wout schreef op 06.04.2007 09:24
Hallo,

Ik heb in mijn database een datumveld staan:
DD-MM-JJJJ

Dit kan nooit een DATE veld zijn, want die hoort er zo uit te zien: JJJJ-MM-DD.
Als je het echt zo in de db hebt ( wat overigens gewoon slecht is)

SELECT RIGHT(datum , 4) AS datum FROM DB
of
SELECT SUBSTR(datum,7, 4) AS datum FROM DB

[Edit]

..k kan immers geen explode() of substr() gebruiken in SQL :) ...

Tuurlijk wel SUBSTR en SUBSTR_INDEX doen dat en:
er kan nog veeeeeeeeeeeeeel meer
[/edit]
Als het geen date veld is, kun je wel substring gebruiken.
Bv: SELECT * FROM tabel WHERE SUBSTRING(dateveld,-4) = '2006'

of zie ik dat fout?
En als je al een grote tabel hebt, als de sodemieter een UPDATE query maken die van DD-MM-JJJJ een goed format naar je DATE veld kopiëert ;-)
Jan Koehoorn schreef op 06.04.2007 09:51
En als je al een grote tabel hebt, als de sodemieter een UPDATE query maken die van DD-MM-JJJJ een goed format naar je DATE veld kopiëert ;-)

Maar hoe dan ook, ook bij een (nu nog) kleine tabel, maak er een datumveld van. :) En dan kan je gebruiken wat ik je zei.
Het is idd een varchar veld..
Dit is gemaakt door de vorige stagiairs toentertijd.
Ik heb het nu als zoiets gemaakt:

while ($row = mysql_fetch_array($rs)) { 
   if (substr($row['datumbezoek'],-4) == $_GET['jaar']) {
     // results..
   } 
}
Wil je het VARCHAR veld kopiëren naar een DATE veld? Ik kan wel een query voor je maken.

Reageren