$result22 = mysql_query("
SELECT datum, CASE
WHEN DATEDIFF( CURRENT_DATE() , 'datum') = 0
THEN datum = 'nu'
WHEN DATEDIFF( CURRENT_DATE() , 'datum') > 0
THEN datum ='later' END
FROM kopers
") or die(mysql_error());
Hiermee krijg ik deze vergelijking:
2006-11-23 15:48:40 met 2006-11-23
Terwijl ik dit wil hebben:
2006-11-23 met 2006-11-23
Sowieso horen er geen quotes om 'datum' in de DATEDIFF functie, het is een kolom!
En daarnaast kan DATEDIFF prima omgaan met 2 verschillende type velden. Bij een DATEDIFF wordt er toch alleen maar gekeken naar het DATE gedeelte van de uitdrukking, dus een vergelijking tussen een DATE en DATETIME veld gaat altijd goed.
$result22 = mysql_query("
SELECT DATE_FORMAT('datum', '%Y-%m-%d') AS datum, CASE
WHEN DATEDIFF( CURRENT_DATE() , datum) = 0
THEN datum = 'nu'
WHEN DATEDIFF( CURRENT_DATE() , datum) > 0
THEN datum ='later' END
FROM kopers
") or die(mysql_error());
Ik heb nu de DATE_FORMAT er in gedaan, maar ook dit maakt geen verschil.
Ook heb de quotes om datum weggehaald, maar dit was ook niet de oplossing?
Nu ik date_format erin heb staan, krijg ik helemaal geen rijen meer te zien?
Iemand enig idee wat ik fout doe?
Ik zie nu pas dat de hele query niet goed is, de CASE is fout. Die DATE_FORMAT() zou ik niet gebruiken, tenzij je de datum ook als resultaat wilt opvragen, maar deze heeft niets te maken met de input voor de CASE. De alias die je aanmaakt van de datum, MOET in elk geval anders zijn. Een alias met dezelfde naam als het origineel is geen alias, het is onzinnig.
Probeer het volgende eens, en let op de alias 'wanneer':
<?
$query = "
SELECT
CASE
WHEN DATEDIFF(CURRENT_DATE(), datum) = 0 THEN 'nu'
WHEN DATEDIFF(CURRENT_DATE(), datum) > 0 THEN 'later'
END AS wanneer
FROM
kopers
";
$result22 = mysql_query($query) or die(mysql_error());
?>
Kan ik ook het aantal correcte rijen tellen, kheb al dit geprobeerd:
COUNT(wanneer) AS teldatums, geeft aan dat die kolom niet bestaat,
COUNT(datum) AS teldatums, geeft alle rijen en niet allen van 'NU' en
mysql_num_rows, maar dan telt ie ook alle rijen, en ook niet alleen die van 'NU'
Hoe kan ik dit nu tellen/count'en ???? (alleen de rijen die 'nu' status hebben?
SELECT COUNT(*) AS aantal
FROM kopers
WHERE DATE(datum) = CURDATE()
Als je de eerder gegeven query wilt gebruiken kun je het volgens mij niet in 1 query oplossen. Dan zou je het met php kunnen doen:
<?php
$count = 0;
while($row = mysql_fetch_assoc($result))
{
if($row['wanneer'] == 'nu')
{
$count++;
}
}
echo $count;
?>