Results 1 to 8 of 8

Thread: datum gebruiken in SQL geeft steeds problemen ?

  1. #1
    Senior Member
    Join Date
    Sep 2002
    Location
    Belgi?½ Roosdaal Pamel
    Posts
    471

    datum gebruiken in SQL geeft steeds problemen ?

    Indien ik datums gebruik in een interbase table en deze via SQL wil selecteren heb ik steeds problemen. Meestal geeft hij een fout op slash en moet dit een '-' zijn waarom weet ik veel en de dag en maand moeten ook steeds omdraaien.


    Is hier geen manier voor die rechtlijnig is?


    Mijn sql geeft nooit de juiste resultaten zie onderstaand vb Waarom ?


    Vb Select * from klanten where klanten.datum > 15/04/2003

  2. #2
    Heb je al gezocht? Denk het niet, anders had je het wel gevonden.

    Maar gebruik parameters:

    SELECT * FROM klanten WHERE datum > :datum

    Query.Params.ParamByName('datum').AsDateTime := Now;
    Query.Open

    Overigens kun je dit beter bij alle invoer van de gebruiker doen in je SQL query. Dus ook voor tekst en getallen (vooral floating getallen, aangezien je dan met de punt of komma zit).

    Dit is geen geldige code, maar het gaat om het idee. Succes.

  3. #3
    Old Navigator Matthijs's Avatar
    Join Date
    Mar 2001
    Location
    Ede, NL. Delphi: Delphi 7/2005 :). Matthijs schrijf je Matthijs
    Posts
    2,199
    Het handigste is om te werken met parameters en een DateTime-variabele mee te geven. Dus iets als:
    Code:
      MyQuery.SQL.Clear;
      MyQuery.SQL.Text := 'SELECT * FROM klanten WHERE klanten.datum > :Datum';
      MyQuery.Params[0].Value := StrToDate('15/04/2003');
      MyQuery.Open;
    Op deze manier heb je nooit last van het verschil in landinstellingen tussen je client en je server.

    [edit] Gezellie is dat, terwijl je aan het typen bent, zie je dat Jelmer ook alweer geantwoord heeft Eigenlijk is Dex zelfkastijding

    [edit2] Oops! Foute index gerbuikt bij de params. (1 ipv 0 )
    Last edited by Matthijs; 30-May-03 at 19:06.
    What's in a sig?

    Would my posting be less valuable if it didnot have a sig? (Vrij naar William S.)

    Let op de kleine lettertjes. For all postings: e&oe!
    This program performed an illegal function, the police are on their way

  4. #4
    Overigens vraag ik me af of StrToDate ook wel helemaal veilig is Mathijs, misschien heb je alsnog hetzelfde probleem omdat StrToDate ook gebruik maakt van lokale instellingen.

    Ik zou dan gaan voor EncodeDate:

    MyQuery.Params.ParamByName('datum').AsDateTime := EncodeDate(2003, 4, 15);

    Verder vind ik ParamByName iets duidelijker en je hebt geen gekloot als je een nieuwe parameter toevoegt.

  5. #5
    Anders kun je ook nog opgeven in delphi:

    DateSeparator

    Succes

  6. #6
    Old Navigator Matthijs's Avatar
    Join Date
    Mar 2001
    Location
    Ede, NL. Delphi: Delphi 7/2005 :). Matthijs schrijf je Matthijs
    Posts
    2,199
    Originally posted by Jelmer Vos
    Verder vind ik ParamByName iets duidelijker en je hebt geen gekloot als je een nieuwe parameter toevoegt.
    Als je voor iedere microseconde gaat is het geindexeerd benaderen van parameters en velden in een tabel of query sneller dan ByName. Maar het zorgt wel voor duidelijker code.
    Eigenlijk is dat laatste ook wel heel erg belangrijk. Een microsec meer of minder merk ik toch niet hier op mijn dual Athlon

    Maar goed, als het de TopicStarter maar duidelijk is wat, hoe en waar waar het het doorgeven van data en zo betreft.
    What's in a sig?

    Would my posting be less valuable if it didnot have a sig? (Vrij naar William S.)

    Let op de kleine lettertjes. For all postings: e&oe!
    This program performed an illegal function, the police are on their way

  7. #7

    Re: datum gebruiken in SQL geeft steeds problemen ?

    Originally posted by DAS
    Indien ik datums gebruik in een interbase table en deze via SQL wil selecteren heb ik steeds problemen. Meestal geeft hij een fout op slash en moet dit een '-' zijn waarom weet ik veel en de dag en maand moeten ook steeds omdraaien.


    Is hier geen manier voor die rechtlijnig is?


    Mijn sql geeft nooit de juiste resultaten zie onderstaand vb Waarom ?


    Vb Select * from klanten where klanten.datum > 15/04/2003
    Ik weet niet hoe dat bij interbase zit maar bij MS SQL server moet je de datum om quotes zetten dus '15/04/2003' En ook hangt het af hoe de datum instelling zit van je sql server zoals mensen voor me al zei Met de parameter hoef je dat iig geen zorgen meer te maken.

  8. #8
    Senior Member Henk Schreij's Avatar
    Join Date
    Sep 2002
    Location
    Heino (Raalte)
    Posts
    1,465

    Arrow Re: Re: datum gebruiken in SQL geeft steeds problemen ?

    Ik weet niet hoe dat bij interbase zit maar bij MS SQL server moet je de datum om quotes zetten dus '15/04/2003' En ook hangt het af hoe de datum instelling zit van je sql server zoals mensen voor me al zei
    MS SQL Server ondersteund de ISO datum. Je kunt een datum dus als string opgeven met bv '20030531' voor 31 mei 2003. Dit is de aanbevolen manier om een datum op te geven (naast natuurlijk via Params) omdat dit ongevoelig is voor land-instellingen en de gekozen dateseparator.

    Ik gebruik zelf de ISO indeling ook:
    In sqlserver geef ik als default de datum van vandaag op met:
    CONVERT(Char(8), Getdate(), 112).
    Convert 112 is de ISO 'yyyymmdd' instelling.
    Dit accepteert hij zonder dat je zelf een typecast naar SmallDateTime hoeft uit te voeren.
    (dit doe ik overigens om een datum zonder tijd-deel te krijgen, MS SQL server heeft geen apart Date-formaat)

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. datum dilemma in mySQL
    By bengel in forum Databases
    Replies: 2
    Last Post: 27-Jul-03, 13:54
  2. Host_name() Sql Server problemen
    By Link in forum Databases
    Replies: 5
    Last Post: 26-May-03, 19:11
  3. Replies: 6
    Last Post: 31-Oct-02, 10:41
  4. Gebruik van editmask geeft problemen
    By Hans Brenkman in forum Algemeen
    Replies: 2
    Last Post: 21-Aug-02, 14:35

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •