Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String mit Datum vergleichen , ist Datum größer als der String ? (https://www.delphipraxis.net/160767-string-mit-datum-vergleichen-ist-datum-groesser-als-der-string.html)

nachtstreuner 30. Mai 2011 15:20

String mit Datum vergleichen , ist Datum größer als der String ?
 
Hallo Delphianer,

ich steh mal wieder vor einem Rätsel:

In einer Datenbanktabelle existiert ein Feld (Angelegt) Format (Date z.b. 14.05.2011).

Der Benutzer wählt aus einer Lookup Kompo einen Monat aus: z.B. '04.2011' (string).

In der SQL-Abfrage sollen nun alle Datensätze nicht angezeigt werden, die im Mai 2011 angelegt wurden.

Wie mach ich das in einer SQL-Abfrage ?

DeddyH 30. Mai 2011 15:31

AW: String mit Datum vergleichen , ist Datum größer als der String ?
 
Je nach DBMS könntest Du dessen Datumsroutinen nutzen. Dazu musst Du die Angabe aus der ComboBox dann in Monat und Jahr zerlegen.
SQL-Code:
SELECT
  <Feldliste>
FROM
  <Tabelle>
WHERE
  NOT (YEAR(<Feld>) = 2011 AND MONTH(<Feld>) = 4)
So oder so ähnlich müsste das funktionieren.

nuclearping 30. Mai 2011 15:34

AW: String mit Datum vergleichen , ist Datum größer als der String ?
 
SQL-Code:
SELECT
  <Feldliste>
FROM
  <Tabelle>
WHERE
  (YEAR(<Feld>) = 2011) AND (MONTH(<Feld>) < 5)
*klugscheiss* :warn: :mrgreen:

DeddyH 30. Mai 2011 15:36

AW: String mit Datum vergleichen , ist Datum größer als der String ?
 
Wenn schon, müsste es ja MONTH > 4 heißen. Aber der Threadtitel und die Problembeschreibung sind etwas widersprüchlich formuliert (was denn jetzt, Datum größer oder Datum ungleich?).

[edit] Obwohl: der Mai wäre ja 5 statt 4, es wird immer verwirrender :gruebel: [/edit]

nuclearping 30. Mai 2011 15:46

AW: String mit Datum vergleichen , ist Datum größer als der String ?
 
Ja, so 100% sicher bin ich mir da auch nicht. Wenn man aus der Combo zB 04.2011 auswählen kann und er dann nur alle ausblenden soll, die im Mai (05) angelegt wurden, macht das wenig Sinn. Daher bin ich mal davon ausgegangen, dass er alle bis zum Mai anzeigen lassen will, daher das < 5. :gruebel:

nachtstreuner 30. Mai 2011 15:46

AW: String mit Datum vergleichen , ist Datum größer als der String ?
 
Hallo DeddyH,

wie schon beschrieben, wird aus einer Lookup Komponente ein String ausgewählt, der den Monat und das Jahr darstellt.

Stringwert : '04.2011' ( Dies ist also kein Datumswert, sondern ein string).

In der Datenbank befinden sich Einträge z.B.:

ID NAME VORNAME ANGELEGT
----------------------------------------
1 Mustermann Andreas 01.04.2011
2 Bettler Sabine 14.05.2011
3 Landstreicher Thomas 12.03.2011

Die Abfrage soll nun nur die Datensätze ID(1 und 3), da diese mit dem Datum(ANGELEGT),entweder in dem selektierten LookupWert liegen oder Monate davor.

Hoffe das dies nun anschaulicher ist.

Trotzdem danke erstmal für die schnellen Antworten.

jobo 30. Mai 2011 15:51

AW: String mit Datum vergleichen , ist Datum größer als der String ?
 
Ich würde den ausgewählten String als Stringparameter an die Db übergeben und dort von der DB mit den zugehörigen Routinen nach DATE konvertieren lassen

Bspw. in Oracle:
Code:
Select * from tabelle
where datumsfeld [<|>|=|...]
to_date('01'|:stringparam, 'DD.MM.YYYY' )

DeddyH 30. Mai 2011 15:53

AW: String mit Datum vergleichen , ist Datum größer als der String ?
 
Wie gesagt: den String zerlegen in Monat und Jahr, das ist der erste Schritt. Nun könnte man noch den genauen Folgemonat ermitteln und in der DB einfach auf kleiner 1. dieses ermittelten Monats abfragen, sofern ich gerade keinen Denkfehler mache.

nuclearping 30. Mai 2011 15:55

AW: String mit Datum vergleichen , ist Datum größer als der String ?
 
Zitat:

Zitat von nachtstreuner (Beitrag 1103763)
Hallo DeddyH,

wie schon beschrieben, wird aus einer Lookup Komponente ein String ausgewählt, der den Monat und das Jahr darstellt.

Stringwert : '04.2011' ( Dies ist also kein Datumswert, sondern ein string).

In der Datenbank befinden sich Einträge z.B.:

ID NAME VORNAME ANGELEGT
----------------------------------------
1 Mustermann Andreas 01.04.2011
2 Bettler Sabine 14.05.2011
3 Landstreicher Thomas 12.03.2011

Die Abfrage soll nun nur die Datensätze ID(1 und 3), da diese mit dem Datum(ANGELEGT),entweder in dem selektierten LookupWert liegen oder Monate davor.

Hoffe das dies nun anschaulicher ist.

Trotzdem danke erstmal für die schnellen Antworten.

Ist das Feld ANGELEGT auch ein STRING-Feld? Wenn ja, warum? Sollte auf jeden Fall als DATE-Feld deklariert sein, weil du darüber eben über die Datumsfunktionen der SQL-Engine (YEAR, MONTH, >, <, =, ...) arbeiten kannst.

DeddyH 30. Mai 2011 15:56

AW: String mit Datum vergleichen , ist Datum größer als der String ?
 
Wenn ich den Ausgangspost richtig verstanden habe, ist das Feld vom Typ DATE.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:47 Uhr.
Seite 1 von 2  1 2      

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