Announcement

Collapse
No announcement yet.

Sortieren einer DB-Tabelle?

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

  • Sortieren einer DB-Tabelle?

    Hallo,

    In einer Datenbanktabelle stehen zwei Felder namens <i>FromDate</i> und <i>ToDate</i>, beide vom Typ VARCHAR(10). Sie stellen im Format „dd.mm.yyyy“ (wie der Name suggeriert) Datumsangaben dar. Clientseitige Geschäftsregeln sorgen dafür, dass das Format so eingehalten wird. In Delphi 5 werden sie somit als persistente Felder vom Typ TStringField abgebildet.

    Wie kann ich (in Delphi 5) diese Tabelle nach dem Feld FromDate sortieren, so dass dabei eine Datumsordnung herauskommt?

    Die Datentypen dieser Felder können nicht in einen proprietären Datums-Datentyp umgewandelt werden, auch kann in einem SELECT (falls Query-Komponente) kein proprietäres Element auftauchen, um die Strings in ihre Datumspendants zu konvertieren. Diese Implementierung muss weiterhin einem offenen SQL2-Standard folgen.

    Gruß
    Stephan Schneider

  • #2
    Hi,

    da wirst Du um einzweites Feld, das per Datenbanktrigger mit dem proprietären Pendant des Stringfeldes gefüllt wird, nicht umhin kommen. Nach diesem Feld kannst Du dann einfach in Datumsordnung sortieren.<br>
    Alternativ kannst Du es ja mal mit einem order by to_date(DeinDatumsfeld, 'DD.MM.YYYY') probieren. Das funktioniert zumindest in Oracle.

    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
      Hallo,

      bei einer Paradox-Datenbank stehen alle LOCAL SQL-Befehle der BDE zur Verfügung, so auch <b>CAST</b>. Innerhalb der SELECT-Abfrage kann die Textdarstellung (VARCHAR) des Datum in einen echten Datumswert umgerechnet werden, so dass die folgende Sortierung möglich wird:
      <pre>
      SELECT DatumVarchar, CAST(DatumVarchar AS DATE) AS DatumWert
      FROM DatumChar
      ORDER BY DatumWert
      </pre>
      P.S: Wenn die Einhaltung des SQL-Standards gefordert wird, hätte man bei der Tabelle für das Datumsfeld niemals einen VARCHAR nehmen dürfen, denn das ist bereits ein Verstoß gegen den SQL-Standard ;-)
      &#10

      Comment


      • #4
        Hallo,

        Welchen Datentyp sollte man für Datumsattribute wählen, um den offenen SQL-Standard zu folgen. Dies bedeutet, dass die Implementierung sowohl mit Paradox, als auch mit Oracle, als auch mit Interbase, usw. funktionieren soll. Meines Wissens nach gibt es keinen zu allen gängigen SQL-Datenbanken kompatiblen Datums-Datentyp. Oder liege ich hier falsch?

        Gruß<br>
        Stepha

        Comment


        • #5
          Hallo,

          Paradox ist <b>keine</b> SQL-Datenbank, daher darf man Paradox an dieser Stelle nicht berücksichtigen. Die BDE simuliert mit LOCAL SQL nur diese Fähigkeit.

          Der SQL-Standard geht von DATETIME (TIMESTAMP) aus, wobei die Funktionen YEAR, MONTH, DAY, HOUR, MINUTE und SECOND eine weitere Unterteilung unterstützen. Je nach Anbieter variert nur die Bezeichnung dieser Funktionen/Datentypen

          Comment

          Working...
          X