Announcement

Collapse
No announcement yet.

Löschen von Tabelleneinträgen über Varchar Feld mit Inhalt aus Timedate

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

  • Löschen von Tabelleneinträgen über Varchar Feld mit Inhalt aus Timedate

    Hallo,
    ich habe folgendes Problem. In einer Interbasetabelle (v7.5) habe ich ein Feld VARCHAR(19) das mit dem Inhalt eines Timestampfeldes befüllt ist also "JJJJ-MM-TT hh:mm:ss".
    Nun möchte ich alle Tabelleneinträge löschen die zwischen zwei Datumseingaben existieren. Etwa so:

    DELETE from table1 where VARCHARFELD1 >= '2006-05' AND VARCHARFELD1 <= '2006-07';
    Kann mir da jemdand helfen?
    Thomas

  • #2
    Nun ja, einen Timestamp als VARCHAR zu speichern hat sicherlich auch Nachteile ;-)

    Du kannst evtl. mit BETWEEN arbeiten, aber überprüfe Dein DELETE erstmals mit einem entsprechenden SELECT Statement (ich kann's nicht testen, ich hab zwar viele Datenbanken, aber keine mit solchen Werten).

    Vielleicht solltest Du aber Deine Timestamp-Werte auch lieber als Timestamp speichern...

    Luc

    Comment


    • #3
      Delete from table1 where VarCharFeld1 like '2006-05%' (Löscht nur den Monat Mai)
      *
      oder
      *
      Delete from table1 where
      where substr(VarCharFeld1,1,7) >='2006-05'
      and substr(VarCharFeld1,1,7) <='2006-07'
      *
      oder
      *
      Vorschlag von Luc.
      *
      Oswal

      Comment


      • #4
        Hallo,
        danke für die Vorschläge.
        Mit einem Timestampwert kann ich nur schwer umgehen, habe da schon einiges probiert, das scheint mir zu mühsam.
        Der Vorschlage von Oswald:

        Delete from table1 where
        where substr(VarCharFeld1,1,7) >='2006-05'
        and substr(VarCharFeld1,1,7) <='2006-07'

        den habe ich zur Zeit so und diesen werde ich auch weiter verwenden. Allerdings da die Felder mit
        "JJJJ-MM-TT hh:mm:ss" befüllt sind muß ich die werte ergänzen:

        Delete from table1 where
        where substr(VarCharFeld1,1,7) >='2006-05000000000000'
        and substr(VarCharFeld1,1,7) <='2006-07999999999999';

        sonst erwischt er nicht alle.

        Thoma

        Comment


        • #5
          um das nun richtig zu Stellen:

          Delete from table1 where
          VarCharFeld1 >= '2006-05' and
          VarCharFeld1 <= '2006-05????????????';

          funktioniert nun.
          Problem ist hier der Hex Wert des "doppelpunktes" der größer ist als der der "9"

          Comment

          Working...
          X