Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Abfrage - Datum zwischen X und Y (https://www.delphipraxis.net/140246-sql-abfrage-datum-zwischen-x-und-y.html)

Major1337 14. Sep 2009 12:52

Datenbank: Oracle • Zugriff über: ODAC

SQL Abfrage - Datum zwischen X und Y
 
Hi,

ich möchte über das eine Editfeld abfragen "Datum von" und mit dem anderen Editfeld "Datum bis" .
Mit welcher SQL Abfrage kann ich nun diese beiden Parmeter vergleichen und mir die Werte auslesen lassen?

Mfg
Major

Klaus01 14. Sep 2009 13:03

Re: SQL Abfrage - Datum zwischen X und Y
 
sollte das im Prinzip nicht in etwa so gehen:

SQL-Code:
select * from table where date > dateFrom and date < dateTo
Grüße
Klaus

mikhal 14. Sep 2009 13:04

Re: SQL Abfrage - Datum zwischen X und Y
 
Variante 1: datum between :wert1 and :wert2
Variante 2: datum >= :wert1 and datum <= :wert2

Denk bei den Vergleichen aber daran, dass der Datentyp DATE auch die Uhrzeit enthält. Zweckmäßigerweise solltest du den Nachkommateil mit TRUNC(datum) abschneiden.

Grüße
Mikhal

Major1337 14. Sep 2009 13:16

Re: SQL Abfrage - Datum zwischen X und Y
 
Delphi-Quellcode:
// DATE FROM
if DesEdit2.Text <> '' then

SmartQuery1.SQL.Add('');
end;


//DATE END;
if DesEdit3.Text <> '' then
begin

SmartQuery1.SQL.Add('');
end;


ICh habe ja zwei Felder in denen ich eine SQL-Abfrage machen muss und es kann auch vorkommen das man auch nur mal wissen will "Datum von" ohne die Angabe bis oder anderst herum.

DeddyH 14. Sep 2009 13:17

Re: SQL Abfrage - Datum zwischen X und Y
 
Dann baust Du Dir den SQL-String dynamisch zusammen und setzt die Parameter entsprechend.

mikhal 14. Sep 2009 13:24

Re: SQL Abfrage - Datum zwischen X und Y
 
ODAC stellt Macros zur Verfügung. Damit kannst du dir den Auswerteteil zusammensetzen:
SQL-Code:
  SELECT
    ...
  FROM
    TABELLE
  WHERE
    ...
    $DATUMVERGLEICH
in deinem Quelltext stellst du das Macro dann zusammen:

Delphi-Quellcode:
  ...
  if MySmartQuery.Active then
    MySmartQuery.Close;
  if DesEdit2.Text <> '' then
    MySmartQuery.MacroByName.Value = ' AND TRUNC(Datum) = ' + Trunc(StrToDate(DesEdit2.Text));
  ...
  MySmartQuery.Open;
Grüße
Mikhal

[edit=mkinzler]Code-Tags durch SQL und Delphi-Tag ersetzt Mfg, mkinzler[/edit]

Major1337 14. Sep 2009 13:35

Re: SQL Abfrage - Datum zwischen X und Y
 
gibt es da keine einfache Lösung ohne diese date (routine) ?
Wenn man z.B. jetzt alle IP Adressen herausfinden will die zwischen 232.18.147.53 und 288.92.141.55 liegen, wie würde man das denn machen?

fkerber 14. Sep 2009 14:48

Re: SQL Abfrage - Datum zwischen X und Y
 
Evtl. würde es sich anbieten, die IP-Adressen in einem anderen Format (z.B. als Integer) in der DB zu speichern.

mkinzler 14. Sep 2009 15:39

Re: SQL Abfrage - Datum zwischen X und Y
 
Als String sollten die Adressen auch zu vergleichen sein

DeddyH 14. Sep 2009 16:30

Re: SQL Abfrage - Datum zwischen X und Y
 
Aber ob man so alle "Zwischen-IPs" bekommt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr.
Seite 1 von 4  1 23     Letzte »    

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