login  Naam:   Wachtwoord: 
Registreer je!
 Forum

MySQL: Between (Opgelost)

Offline Raze - 19/02/2009 17:59
Avatar van RazePHP beginner Hallo,

ik heb volgende SQL-code:
  1. $date_today = date('Y-m-d');
  2. $set_tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
  3. $date_tomorrow = date("Y-m-d", $set_tomorrow);
  4. $set_week = mktime(0,0,0,date("m"),date("d")+7,date("Y"));
  5. $date_week = date("Y-m-d", $set_week);
  6.  
  7. $query = "SELECT * FROM `cal_test` BETWEEN ".$date_today." AND ".$date_week;
  8. $calendar = mysql_query($query) OR die(mysql_error());
  9. $calendar_rows = mysql_fetch_assoc($calendar);


En ik krijg dus deze foutmelding:
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 'BETWEEN 2009-02-19 AND 2009-02-26' at line 1

Zoals je kan zien, wil ik dus een kalender maken, en wanneer er op een knop ("deze week") klikt, er alle items moeten getoond worden in de huidige week (eigenlijk is "week" wel relatief, want ik wil dan gewoon de items van de volgende 7 dagen tonen).

Wat is er hier fout aan?

PS: ik gebruik nu het gewone VARCHAR, maar ik denk dat DATETIME hoogstwaarschijnlijk beter is. Indien niemand voor dit een oplossing weet, of jullie echt zeggen dat DATETIME beter is, ga ik dat proberen.  

4 antwoorden

Gesponsorde links
Offline marten - 19/02/2009 18:00 (laatste wijziging 19/02/2009 18:01)
Avatar van marten Beheerder datetime is beter en daarom werkt je between ook niet. Deze werkt namelijk niet met VARCHAR

Citaat:
For best results when using BETWEEN with date or time values, you should use CAST() to explicitly convert the values to the desired data type. Examples: If you compare a DATETIME to two DATE values, convert the DATE values to DATETIME values. If you use a string constant such as '2001-1-1' in a comparison to a DATE, cast the string to a DATE.


Je kan dus ook de functie CAST() gebruiken om het te doen voorkomen als datum.
Offline Raze - 19/02/2009 19:37 (laatste wijziging 19/02/2009 19:43)
Avatar van Raze PHP beginner mmmh... ik heb dus het omgezet van VARCHAR naar DATE. toch werkt het nog steeds niet (dezelfde foutmelding). Ik heb hier toch nog enkele vragen bij:

- Ik heb DATE gekozen omdat ik enkel een datum heb, en geen tijdstip. Werkt DATE ook of moet het echt DATETIME of iets anders zijn?

- Ik heb ook niets aan mijn code op mijn pagina veranderd. Is dit fout en, zo ja, wat moet ik dan juist veranderen?

- i.v.m. die CAST heb ik ook iets met CONVERT gevonden, maar hier begrijp ik eerlijk gezegd niets van. Ik heb de handleiding i.v.m. CAST en BETWEEN eens op de MySQL-website gelezen, maar hier geraak ik weinig wijzer uit.

Edit: Ik heb bij mijn query "WHERE date" toegevoegd. Nu krijg ik de foutmelding niet meer, maar hij selecteert ook niets uit de database.
Offline Wim - 19/02/2009 19:43
Avatar van Wim Crew algemeen
  1. $query = "SELECT * FROM `cal_test` BETWEEN NOW() AND (NOW() + INTERVAL 7 DAY)";
  2. $calendar = mysql_query($query) or die(mysql_error());
  3. $calendar_rows = mysql_fetch_assoc($calendar);


Werkt dit dan? Ik heb het stuk waar je mbv php datum's maakt vervangen door de mysql variant
Offline Raze - 19/02/2009 19:48 (laatste wijziging 19/02/2009 19:48)
Avatar van Raze PHP beginner @wimmarien: bedankt voor de tip, het werkte (bijna)
het enige wat ik heb gedaan is voor BETWEEN "WHERE date" toegevoegd, en nu werkt het dus  

thx  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.171s