Philipp: Datum + 3 Monate

Hallo zusammen,

Ich habe eine Datenbank, bei der beim Anlegen eines neuen Datensatzes das aktuelle Datup ein ein eigenes Feld gesetzt wird.
Jetzt wollte ich ein "Ablaufdatum" in ein eigenes Feld setzten, das einfach nur 3 Monate zu dem aktuellen Datum dazuzählen sollte.
Mit dem SQL-Behehl funktionier das nicht, also habe ich es mit dem JavaScript-Befehl new Date probiert.
Da soll er das aktuelle Datum mit "var jetzt = new Date();" holen, dann mit get Day, Month und Year die einzelnen Daten da raus lesen und dann in die richtige Form bringen.
Wenn ich dann bei Month 3 addiere, kann es allerdings vorkommen, dass ein "3.14.2003" rauskommt, und das will ich ja nicht....
gibt es da eine bessere Möglichkeit außer mit JavaScript zu sagen
"if(Month == 14) { var Month = "02"; }"
weil da ja dann das Jehr trotzdem bei 2003 bleibt...

Vielen Dank für eure Antworten,
Philipp

  1. Hallole!

    Ich hab sowas ähnliches mit PHP gemacht. und zwar wollte ich alle Datensätze die älter als drei Wochen sind löschen lassen.
    Dazu habe ich beim auslesen aus der DB verglichen mit:

    $_21_days = date("Y-m-d",(time()-(21*24*60*60)));

    und habe dann gleich den:

    mysql_query("DELETE FROM

    ausgeführt.

    Falls du weitere Hilfe brauchst, melde dich.

    Gruß Oliver

  2. Moin,

    Jetzt wollte ich ein "Ablaufdatum" in ein eigenes Feld setzten, das einfach nur 3 Monate zu dem aktuellen Datum dazuzählen sollte.

    du kannst das auch mit
    for(i=1; i<=3; i++)
    {
     if(Month > 12)
     {
      Month = 1;
     }
     else
     {
      Month++;
     }
    }

    Damit zählt das Script drei Monate dazu.

    cu, javascriptmaster

  3. Hi,

    Mit dem SQL-Behehl funktionier das nicht,

    aber genau damit solltest Du es machen um nicht in die Schweirigkeiten mit den Jahren zu kommen.
    Welches Datenbanksystem benutzt Du denn?
    Es gibt für fast alle, Funktionen die Monate, Tage uä. addieren lassen.
    Es ist wirklich bessser, solche Dinge von der Datenbank übernehmen zu lassen.

    Bsp: in mysql ist es data_add()

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
    Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
    Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
    1. Hi

      Welches Datenbanksystem benutzt Du denn?

      *gg* wenn ich das wüsste....
      Ich bin als Praktikant in die Firma gekommen, und da stand die Datenbank schon und das is sicher keine normale SQL-Syntax... zumindest hab ich die noch nie irgendwo anders gesehen...
      ich schreib mal ein paar syntaxbeispiele, vielleicht kannst du mir das dann sagen...

      !#INSERTBLOCK(Daten in DB schreiben);
      !#LET(K_MAILADRESSE=!#U_NAME;@!#U_DOMAIN;);
      !#LET(K_DATUM_ERSTELLT_TXT=!#DATE(tt.mm.jjjj|now););
      ...
      !#ENDINSERTBLOCK;

      oder

      !#BLOCK(ANSPRECHPARTNER);
      !#WHERE(AP_FI_ID=!#FIID;);
      !#LOOP;
      ...
      !#ENDLOOP,
      !#ENDBLOCK;

      Danke für die Hilfe,
      Philipp

      1. Hi,

        *gg* wenn ich das wüsste....
        Ich bin als Praktikant in die Firma gekommen, und da stand die Datenbank schon und das is sicher keine normale SQL-Syntax... zumindest hab ich die noch nie irgendwo anders gesehen...
        ich schreib mal ein paar syntaxbeispiele, vielleicht kannst du mir das dann sagen...

        gibt es niemanden den Du fragen kannst.
        Google ist nicht sehr gesprächig, könnte informix sein
        dateadd() heisst das übrigens auch da

        ciao
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
        Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
        Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
  4. Jetzt wollte ich ein "Ablaufdatum" in ein eigenes Feld setzten, das einfach nur 3 Monate zu dem aktuellen Datum dazuzählen sollte.
    Mit dem SQL-Behehl funktionier das nicht, also habe ich es mit dem JavaScript-Befehl new Date probiert.

    Um Gottes Willen, lass JavaScript aus dem Spiel!

    Es geht doch auch Serverseitig.

    Die Datums-Funktionen von MySQL:
    http://www.mysql.com/doc/en/Date_and_time_functions.html
    Die Typen DATETIME, DATE und TIMESTAMP:
    http://www.mysql.com/doc/en/DATETIME.html
    Mit dem erwaehnten DATE_ADD() und NOW() solltest Du eigentlich was hinkriegen.

    Sonst machst Du es mit PHP oder mit der Skriptsprache,
    mit der Du halt auf dem Server auf die Datenbank zugreifst.
    Ansatz: Timestamp (im "echten" Unix-Timestamp-Format,
    d.h. Sekunden seit dem 1. Januar 1970) nehmen,
    3 Monate dazuzaehlen (+7776000 Sekunden oder so),
    und dann wieder ins gewuenschte Format zurueckkonvertieren.

    Datums- und Zeitfunktionen in PHP:
    http://ch.php.net/manual/de/ref.datetime.php

    HTH, mfg
    Thomas