timestamp vs. datetime

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

  • timestamp vs. datetime

    Hallo Leute,

    immer wieder das Problem mit datum ..... hab ich irgendwo scho im Forum gelesen.
    Trau mich die Frage eigentlich nicht stellen.
    Deswegen hab ich mittlerweile wirklich etliche Stunden mit dem Nachlesen und Suchen verbracht und komm einfach nicht weiter, bzw. bin jetzt gänzlich verwirrt. Bin mir auch nicht mehr sicher, ob ich hier im richtigen Forum poste.

    Ich möchte das MySQL selbst in meiner Spalte 'uebung' das Datum incl. Zeit beim insert selbstständig setzt
    d. h. der wert $stamp kommt aus keinem Formular und
    ich später mal damit arbeiten/rechnen kann.
    Als gewünschtes Ergebnis soll nach einem select z. B. Freitag, 04. Juli 03 um 12:30 Uhr erscheinen.


    1. FRAGE: WAS IST DER ZU WÄHLENDE Typ vom Feld stamp


    Möglichkeiten des Typs vom Feld stamp

    I. TIMESTAMP(14) www.mysql.de/doc/de/DATETIME.html

    Der TIMESTAMP-Typ ist ein Typ, den Sie dafür benutzen können, um INSERT- oder UPDATE-Operationen mit dem aktuellen Datum und der aktuellen Zeit zu stempeln.
    Die automatische Aktualisierung der TIMESTAMP-Spalte geschieht unter einer der folgenden Bedingungen:

    Die Spalte wird in einem INSERT-Statement nicht explizit angegeben.
    Wenn Sie die TIMESTAMP-Spalte explizit auf NULL setzen.

    2. FRAGE: WAS HEISST EXPLIZIT? - ist u. a. INSERT-Statement nicht explizit?

    $sql="INSERT INTO uebung VALUES('', '', '$titel') "; // '$nr', '$stamp', '$titel'

    Ich versteh das Ganze so, dass nr wegen autoincrement MySQL selbst setzt => funktioniert ja auch,
    und dass wegen dem Typ TIMESTAMP hier MySQL auch den Zeitstempel selbst setzen muss?!
    =>funktioniert aber nicht, Ergebnis: Unzulässige DATETIME-, DATE- oder TIMESTAMP-Werte werden in den ``0''-Wert des jeweiligen Typs umgewandelt ('0000-00-00 00:00:00', '0000-00-00' oder 00000000000000).

    Lassen Sie MySQL die Spalte setzen, wenn die Zeile erzeugt wird. Das initialisiert sie auf das aktuelle Datum und die aktuelle Zeit.
    Wenn Sie nachfolgende Aktualisierungen anderer Spalten in der Zeile durchführen, setzen Sie die

    TIMESTAMP-Spalte explizit auf ihren aktuellen Wert.

    3. FRAGE: WIE KANN ICH explizit auf ihren aktuellen Wert setzen?



    II. DATETIME(14)
    http://www.php-resource.de/forum/sho...ighlight=datum


    4. FRAGE: Setzt MySQL hier auch selbst? ich denke nicht.


    Habs scho mal
    PHP-Code:
    setlocale("LC_TIME","ge");    //Deutsche Zeit setzen
    $stamp=date();        //Zeitstempel setzen
    $heute=strftime("%a %d %b %Y",$stamp);//Beispiel für definieren wie (Format) unser aktueller Stand aussieht

    $sql="INSERT INTO buch VALUES('', '$stamp', '$titel') "

    echo 
    $sql;     // liefert INSERT INTO uebung VALUES('', '1057318839', 'Buch A') 
    Wenn ich aber mit phpMyAdmin in die db reinschaue, dann seh ich wieder lauter Nullen!
    Wer bringt mich bitte auf dem richtigen Weg?

    Oder wo ist sowas leicht verständlich eventuell mit Muster-Script beschrieben?

    Viele Grüße
    fan-maec

  • #2
    Re: timestamp vs. datetime

    Original geschrieben von fan-maec
    Die automatische Aktualisierung der TIMESTAMP-Spalte geschieht unter einer der folgenden Bedingungen:

    Die Spalte wird in einem INSERT-Statement nicht explizit angegeben.
    Wenn Sie die TIMESTAMP-Spalte explizit auf NULL setzen.

    2. FRAGE: WAS HEISST EXPLIZIT? - ist u. a. INSERT-Statement nicht explizit?

    $sql="INSERT INTO uebung VALUES('', '', '$titel') "; // '$nr', '$stamp', '$titel'

    Ich versteh das Ganze so, dass nr wegen autoincrement MySQL selbst setzt => funktioniert ja auch,
    und dass wegen dem Typ TIMESTAMP hier MySQL auch den Zeitstempel selbst setzen muss?!
    =>funktioniert aber nicht, Ergebnis: Unzulässige DATETIME-, DATE- oder TIMESTAMP-Werte werden in den ``0''-Wert des jeweiligen Typs umgewandelt ('0000-00-00 00:00:00', '0000-00-00' oder 00000000000000).
    ist bedingung eins erfüllt? nein, denn du hast einen wert für die betreffende spalte angegeben (wenn du dies nicht tun willst, arbeite mit der alternativen INSERT-syntax mit SET spaltenname = wert)

    ist bedingung zwei erfüllt? nein, denn du weist der spalte nicht den wert NULL zu, sondern einen leeren string ''.
    II. DATETIME(14)
    4. FRAGE: Setzt MySQL hier auch selbst? ich denke nicht.
    nein.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      explizit = ausdrücklich

      implizit = stillschweigend, vorbehaltlos
      carpe noctem

      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

      Kommentar


      • #4
        @ goth,
        Herzlichen Dank für die deutsche Übersetzung, jetzt ist es mir verständlicher.

        @wahsaga,
        ich werds mal mit dem set probieren.

        Euch beide, Danke einstweilen!

        Gruß
        fan-maec

        Kommentar


        • #5
          Original geschrieben von fan-maec
          ich werds mal mit dem set probieren.
          oder du schreibst an der stelle, wo den datumsfeld steht, einfach explizit NULL (ohne anführungszeichen afaik) als wert in die insert-anweisung ...
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            @ wahsaga,

            ja, jetzt hab ichs, aber nur mit deiner genialen Hilfe!!

            Apropo: Was heisst afaik?


            PHP-Code:
            <?php
            connect
            ();

            $titel='Buch B';

            $db="test";

            /*oder du schreibst an der stelle, wo den datumsfeld steht, 
            einfach explizit NULL (ohne anführungszeichen afaik) als wert in die insert-anweisung ...  */
            //$sql="insert into uebung values('', explizit NULL, '$titel') "; //funktioniert nicht so
            // $sql="insert into uebung values('', afaik, '$titel') "; // funktioniert auch nicht

            // HIER DIE LÖSUNG
            $sql="insert into uebung values('', NULL, '$titel') "// ausdrücklich NULL
            mysql_db_query($db,$sql)or die(mysql_error());

            echo 
            $sql;
            ?>
            Zuletzt geändert von fan-maec; 04.07.2003, 18:32.

            Kommentar


            • #7
              Original geschrieben von fan-maec
              Apropo: Was heisst afaik?
              abkürzung für "as far as i know" = "so weit ich weiss".

              afaics = "as far as i can see"
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar

              Lädt...
              X