Ik heb de volgende code:
$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

Hoe kan ik nou de tijd eraf halen in de query?
Kijk naar de mysql functie DATE_FORMAT()
De functie DATE() doet wonderen met een DATETIME.

@Eris: DATE_FORMAT() maakt een string van de DATETIME en dat is hier niet nodig.
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());
?>
Heey frank, (en de rest)

Harstikke bedankt. Het probleem is opgelost, dankzij het laatste voorbeeld van frank. Super bedankt. Nu kan ik weer verder ;)

Groetjes
-Chupskie
Euhhm ik heb nog 1 vraagje?

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;
?>
Perfect Blanche, super bedankt!
Het is nu helemaal gelukt!

Thankxs
-Chupskie

Reageren