[MySQL] Rekenen met datums
Ik heb een probleem.
Ik heb een script waarbij ik standen uit de database moet halen uit een bepaalde "range".
Het gaat dan per maand.
Bijv.
van 2006-01-01 tot 2006-02-01 moeten er rows worden opgehaald en daar word dan een gemiddelde van berekend.
Ik heb in de database de tijden opgeslagen in DATETIME.
en ik gebruik zelf de query:
Code (php)
1
"SELECT AVG(stand) as avg_jan FROM standen WHERE tijd between '$year-01-01' and $year-02-01";
Als ik de WHERE clause weghaal dan krijg ik wel een gemiddelde (alleen die wil ik niet).
Heeft iemand een idee ?
Gewijzigd op 26/01/2006 18:27:00 door Knorfski
'$year-02-01' staat niet tussen quotes. Dat zou nog wel eens een probleem kunnen geven...
Code (php)
1
2
3
4
2
3
4
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2000-01-01 and 2000-02-01' at line 1
Query:
SELECT AVG(stand) as avg_jan FROM standen WHERE tijd between 2000-01-01 and 2000-02-01
Query:
SELECT AVG(stand) as avg_jan FROM standen WHERE tijd between 2000-01-01 and 2000-02-01
Als ik alle quotes weglaat dan krijg ik hetzelfde resultaat als in het begin :'(
want als dat zo is moet u, geloof ik, '2000-01-01 00:00:00' and '2000-02-01 00:00:00' eens proberen
ben geen pro maar bij mij werkt het zo
$van =$year."-01-01";
$tot=$year."-02-01";
$sql="SELECT AVG(stand) as avg_jan FROM standen WHERE tijd BETWEEN $van AND $tot";
echo $sql; (ff kijken wat je de DB precies vraagt.)
$res=mysql_query($sql);
Is het dan met of zonder quotes ?
zonder quotes krijg ik de melding
Code (php)
1
2
2
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '00:00:00 and 2000-02-01 00:00:00' at line 1
SELECT AVG(stand) as avg_jan FROM standen WHERE tijd between 2000-01-01 00:00:00 and 2000-02-01 00:00:00
SELECT AVG(stand) as avg_jan FROM standen WHERE tijd between 2000-01-01 00:00:00 and 2000-02-01 00:00:00
Gewijzigd op 26/01/2006 20:26:00 door Knorfski
SELECT * FROM $table WHERE datum BETWEEN $mavan AND $matot;
en dat werkt prima zonder de ''
Probeer het nog eens zonder de tijd( dus alleen YYYY-MM-DD) als je wilt en in wat voor VELD is je data in de tabel opgeslagen?