Announcement

Collapse
No announcement yet.

Datum eingrenzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datum eingrenzen

    Hallo, mit den folgenden Anweisungen kann ich einen Bereich von z.B. 1.1.2000 bis 31.12.2000 eingrenzen:

    EditRangeStart;

    Datamodule2.Table1GebDat.Value := DateTimePicker1.Date;

    EditRangeEnd;

    FieldByName('GebDat').AsDateTime := DateTimePicker2.Date;

    ApplyRange;

    Was kann ich aber tun, damit mir ein Daten-Bereich angezeigt wird , in dem alle Datensätze angezeigt werden,die in einem bestimmten Monat liegen. Egal um welches Jahr es sich handelt. Vielen Dank für Tipps. Gruss ph.

  • #2
    Hallo Peter,

    dazu mußt Du zuerst den Monat aus dem Datum extrahieren und je nach verwendeter DB als zusätzliches (indiziertes) Feld abspeichern oder die Eingrenzung über ein SQL Select realisieren. Wobei hier wieder jeder Hersteller sein eigenes Süppchen köchelt.
    Unter Oracle könnte man z.B. folgendes machen: Select * from Tabelle where To_Char(GebDat, 'MM') between '01' and '04' um alle Daten für die Monate Januar bis April abzurufen (unabhängig vom Jahr).
    Für die Oracle-SQL-Funktion To_Char gibt es in Local-SQL bestimmt ein Äquivalent.

    Gruß Fal
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      So geht's in Local SQL:<pre>
      SELECT saledate,

      EXTRACT(YEAR FROM saledate) AS YY,
      EXTRACT(MONTH FROM saledate) AS MM,
      EXTRACT(DAY FROM saledate) AS DD

      FROM orders
      ...
      </pre&gt

      Comment


      • #4
        Hallo,
        hier ein Beispiel für alle, die im jetzigen Monat Geburtstag haben (in Local SQL)
        DecodeDate(Date,y,m,d);<br>
        sd := FormatDateTime('dd',Date);<br>
        Query1.close;<br>
        Query1.SQL.clear;<br>

        s := 'SELECT name, gebdat FROM kunden.db '+<br>
        ' WHERE SUBSTRING(CAST(CAST(gebdat AS DATE) AS CHAR(10)) FROM 1 FOR 2) = "'+<br>
        sd+'" ORDER BY gebDat';<br>

        Query1.SQL.Add(s);<br>
        Query1.Active := true;<br>

        mfg Klaus-Pete

        Comment

        Working...
        X