strings in SQL

Status
Niet open voor verdere reacties.

quadran

Gebruiker
Lid geworden
26 jul 2006
Berichten
162
ik zou twee strings in sql moeten vergelijken

het zijn eigenlijk datums maar in tekstformaat

het eigenaardige is dat

24/11/2008 kleiner wordt beschouwd dan 27/10/2008
dus de maand doet er precies niets toe.

25/11/2008 wordt dan wel weer als groter beschouwd dan 24/11/2008.

het feit dat het in tekstformaat bewaard wordt heeft een achterliggende reden dat in bepaalde gevallen de tekst niet een datum is maar een woord.

iemand een idee om toch te bekomen dat er juist wordt gecontroleerd?

mvg
 
dit is mijn sql string

Code:
      sprintf(SQLText,"UPDATE Speler_gerelateerd SET geschorst1 = false WHERE idspeler = %d and GEEL1X = true and geschorst1x < '%s';", idspeler, NxDatePicker27->Text);

geschorst1x is van het type text
DatePicker27 geeft ook een return value van het type text terug.

toch geeft deze sql string 26/11/2008 als een LAGERE datum dan 28/10/2008 :rolleyes:
 
UPDATE Speler_gerelateerd SET geschorst1 = false WHERE idspeler = 1169 and GEEL1X = true and geschorst1x < '17/10/2008';

Bovenstaande string gebruik ik dus.

toch geeft dit iets vreemds

hij interpreteerd 26/11/2008 groter dan 24/12/2008.
 
de oorzaak is het volgende

als tekst zijnde is

26/11/2008 inderdaad kleiner dan 28/10/2008

26112008 < 28102008
 
Je datamodel is pertinent fout als een datumveld ook een string kan bevatten. Een datum is een datum, een string een string. Dat zijn twee totaal verschillende dingen. Maak desnoods een veld extra aan, maar sla datums _altijd_ op als DATE en nooit als string, om de reden die je nu geeft. Er zijn overigens meer redenen om het niet zo te doen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan