Datumskonvertierung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datumskonvertierung

    Hi,
    mein Problem ist folgendes.
    Ich habe in der Datenbank zwei Datumsfelder: validFrom und validTo. Das Format sieht so aus jjjjmmtt.

    Nun habe ich ein Formular, in dem ich ein Eingabefeld Restlaufzeit habe. Wenn ich dort z.B. 40 eintrage, möchte ich nur die Datensätze bekommen, wo die Differenz von heute und validTo kleiner oder gleich 40 ist.

    Muss ich das Datum irgendwie umrechnen ?

    Wie kriege ich das hin ?



    Manus manum lavat.

  • #2
    select * from tabelle where time > subdate("2001-12-16",interval "40" day);

    Kommentar


    • #3
      Hi hand,
      kannst Du vielleicht noch etwas zur Erklärung dazu schreiben, damit ich dann nicht noch mal posten muss

      time ist sicherlich das aktuelle Datum, oder ?
      2001-12-16 ist sicherlich mein validTo, oder ?

      Stimmt das ?
      Manus manum lavat.

      Kommentar


      • #4
        War wohl etwas unverständlich, sorry! time soll das Datumsfeld in der Datenbank sein, im Format DATETIME oder DATE
        2001-12-16 das validTo

        DATE_ADD(date,INTERVAL expr type)
        DATE_SUB(date,INTERVAL expr type)
        ADDDATE(date,INTERVAL expr type)
        SUBDATE(date,INTERVAL expr type)

        Diese Funktionen können Datumsberechnungen durchführen.
        (Ab MySQL Version 3.22.)
        ADDDATE() und SUBDATE() sind Synonyme für DATE_ADD() und DATE_SUB().

        In der Version MySQL 3.23, kannst Du auch + und - anstatt DATE_ADD() oder DATE_SUB() verwenden,
        soferne der Ausdruck auf der rechten Seite einem DATETIME oder DATE Format entspricht.

        "date" i.a. Beschreibung ist das Startdatum.
        "expr" spezifiziert das Interval, welches addiert oder subtrahiert werden soll.
        "type" beschreibbt wie das Interval interpretiert werden soll.

        SECOND Sekunden
        MINUTE Minuten
        HOUR Stunden
        DAY Tage
        MONTH Monate
        YEAR Jahre
        MINUTE_SECOND Minuten:Sekunden
        HOUR_MINUTE Stunden:Minuten
        DAY_HOUR "Tage Stunden"
        YEAR_MONTH "Jahre-Monate"
        HOUR_SECOND "Stunden:Minuten:Sekunden"
        DAY_MINUTE "Tage Stunden:Minuten"
        DAY_SECOND "Tage Stunden:Minuten:Sekunden"

        mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
        -> 1998-01-01 00:00:00
        mysql> SELECT INTERVAL 1 DAY + "1997-12-31";
        -> 1998-01-01
        mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;
        -> 1997-12-31 23:59:59
        mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
        INTERVAL 1 SECOND);
        -> 1998-01-01 00:00:00
        mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
        INTERVAL 1 DAY);
        -> 1998-01-01 23:59:59
        mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
        INTERVAL "1:1" MINUTE_SECOND);
        -> 1998-01-01 00:01:00
        mysql> SELECT DATE_SUB("1998-01-01 00:00:00",
        INTERVAL "1 1:1:1" DAY_SECOND);
        -> 1997-12-30 22:58:59
        mysql> SELECT DATE_ADD("1998-01-01 00:00:00",
        INTERVAL "-1 10" DAY_HOUR);
        -> 1997-12-30 14:00:00
        mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
        -> 1997-12-02
        mysql> select date_add("1999-01-01", interval 1 day);
        -> 1999-01-02
        mysql> select date_add("1999-01-01", interval 1 hour);
        -> 1999-01-01 01:00:00

        Wenn ein ungültiges Datum verwendet wird, ist das Ergebnis NULL.

        Kommentar


        • #5
          Hi,
          ich sitze jetzt geschlagene 2 Stunden hier vor und verstehe gar nichts.

          Nochmal mein Problem:
          Ich habe in der DB ein Feld, welches valid_To heisst. Das hat den Typ DATE (2001-02-15)

          Mein Formular hat ein Eingabefeld Restlaufzeit, d.h. dort kann man z.B. 20Tage eingeben. Nun möchte ich einen Select machen, der mir die Datensätze anzeigt, wo die Differenz vom aktuellen Datum - 20< ist, als das valid_to.

          BSP: 31.03.2002 - 20 = 11.03.2002 valid_to = 02.03.2002

          Mein Versuch ist dieser, der aber leider nicht klappt

          Der Select zur Zeit sieht so aus:

          "SELECT firma, abteilung, vorname, nachname, valid_to, ort from trustme where firma='$firma' and nachname LIKE '$nachname' ORDER BY valid_to"; -> das funzt

          Dort müsste jetzt noch die Abfrage für das Problem rein:

          "SELECT firma, abteilung, vorname, nachname, valid_to, ort from trustme where firma='$firma' and nachname LIKE '$nachname' and valid_to < subdate('now()',interval '$rest' day) ORDER BY valid_to";

          $rest = Restlaufzeit

          Kann mir bitte jemand helfen

          Manus manum lavat.

          Kommentar

          Lädt...
          X