AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sql Datum vergleich

Ein Thema von Reini64 · begonnen am 14. Apr 2004 · letzter Beitrag vom 14. Apr 2004
Antwort Antwort
Reini64

Registriert seit: 3. Mär 2004
Ort: Ulmen
83 Beiträge
 
#1

Sql Datum vergleich

  Alt 14. Apr 2004, 13:12
Hi,

ich habe folgendes Problem:

wie kann ich mit Sql ein Datum vergleichen


Delphi-Quellcode:

   such_datum := "13.04.2004";
   dm_auftrag.q_selbstbucher.SQL.Text :=
        'select lanme, lname2, lpz, lort, versand_id, versand_datum from bestellung where ' +
        ' SUBSTRING( versand_datum from 1 for 10 ) = ' + #34 + such_datum + #34 +
        ' group by versand_id' ;
Danke für die Unterstützung

Gruß

Reinhard
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Sql Datum vergleich

  Alt 14. Apr 2004, 13:16
Welchen Typ hat das "versand_datum" in der DB ? Und was ist das :

versand_datum from 1 for 10 Noch nie gesehen. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#3

Re: Sql Datum vergleich

  Alt 14. Apr 2004, 14:09
Moin Reinhard

Liegt Versand_Datum als Datum in der DB vor, dann kann es, wenn die Regionaleinstellungen des DB Servers von denen des Clients abweichen, ganz schnell nach hinten losgehen.
Denn bei der implizierten Umwandlung Date->String / String->Date entscheiden nunmal die Regionaleinstellungen.
Wenn du das Ganze in der Art wie im Code-Schnipsel machst, dann wird exakt ein Datum mit einem Datum verglichen.
Weder der Client noch die DB haben dann noch eine Möglichkeit irgendwelchen Mist zu bauen. (Oft gesehen: Tag & Monat vertauscht)

Delphi-Quellcode:
Var
  such_Datum :TDate;
  //...
Begin
  //...
  Such_Datum := EncodeDate(2004, 04, 13);
  With DM_Auftrag.Q_Selbstbucher Do
  Begin
    SQL.Text :=
      'SELECT lName' + #10 +
      ' ,lName2' + #10 +
      ' ,lPz' + #10 +
      ' ,lOrt' + #10 +
      ' ,Versand_ID' + #10 +
      ' ,Versand_Datum' + #10 +
      'FROM Bestellung' + #10 +
      'WHERE Versand_Datum = :i_Such_Datum' + #10 +
      'GROUP BY Versand_ID';
    // Parsen des Statements um Query Parameter zu finden...
    Prepared := True;
    // Werte an Query Parameter übergeben...
    With Parameters.ParamByName('i_Such_Datum') Do
    Begin
      DataType := ftDate;
      Value := Such_Datum;
    End;
    Open;
    //...
  End;
  Mit Zitat antworten Zitat
Reini64

Registriert seit: 3. Mär 2004
Ort: Ulmen
83 Beiträge
 
#4

Re: Sql Datum vergleich

  Alt 14. Apr 2004, 14:31
Also das versand_datum ist eine DateTime (13.04.2004 18:43:12) Datenfeld

Gruß
Reinhard
  Mit Zitat antworten Zitat
Reini64

Registriert seit: 3. Mär 2004
Ort: Ulmen
83 Beiträge
 
#5

Re: Sql Datum vergleich

  Alt 14. Apr 2004, 21:41
Habe die lösung selber gefunden !

Das Edit1.text ist das gesuchte Datum (13.04.2004).
Delphi-Quellcode:
    stag := copy(edit1.Text,0,2);
    smonat := copy(edit1.Text,4,2);
    sjahr := copy(edit1.Text,7,4);

    dm_auftrag.q_selbstbucher.Close;

    dm_auftrag.q_selbstbucher.SQL.Text :=
       ' select (lname + " " + lname2) as name, lplz, lort, versand_id from bestellung ' +
       ' where extract(Day from versand_datum) =' + stag +
       ' and extract(month from versand_datum) =' + smonat +
       ' and extract(year from versand_datum) =' + sjahr +
       ' group by versand_id order by versand_id ';

    dm_auftrag.q_selbstbucher.Open;
Gruß

Reinhard
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: Sql Datum vergleich

  Alt 14. Apr 2004, 21:55

Wenn du jetzt noch einen TDateTimePicker nimmst, dann klapt das:

SQL-Code:
  With DM_Auftrag.Q_Selbstbucher Do
  Begin
    SQL.Text :=
      'SELECT lName' + #10 +
      ' ,lName2' + #10 +
      ' ,lPz' + #10 +
      ' ,lOrt' + #10 +
      ' ,Versand_ID' + #10 +
      ' ,Versand_Datum' + #10 +
      'FROM Bestellung' + #10 +
      'WHERE Versand_Datum = :i_Such_Datum' + #10 +
      'GROUP BY Versand_ID' + #10 +
      'ORDER BY Versand_ID';
    // Parsen des Statements um Query Parameter zu finden...
    Prepared := True;
    // Werte an Query Parameter übergeben...
    With Parameters.ParamByName('i_Such_Datum') Do
    Begin
      DataType := ftDate;
      Value := DateTimePicker1.Date;
    End;
    Open;
    //...
  End;
Auf die Art muss das Statement durch solche in den String konkatinierte Werte entstellt werden. Außerdem kann der User nur noch gültige Datumswerte angeben.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz