AnoNym NeoDym: Datum in MySQL schreiben

Hallo Forum,

wie muss ich einen Ausdruck wie "2012-06-03" oder "2000-6-3" in PHP formatieren, damit er in ein Datumsfeld einer SQL-Datenbank geschrieben werden kann?

Danke.

  1. Hi,

    wie muss ich einen Ausdruck wie "2012-06-03" oder "2000-6-3" in PHP formatieren, damit er in ein Datumsfeld einer SQL-Datenbank geschrieben werden kann?

    Warum liest du das nicht im MySQL-Handbuch nach?
    Dort sind die gültigen Datumsformate doch beschrieben.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Warum liest du das nicht im MySQL-Handbuch nach?
      Dort sind die gültigen Datumsformate doch beschrieben.

      $abfrage = "INSERT INTO gkind (gdatum) VALUES (2007-03-12)";  
      mysql_query($abfrage);  
        
      echo mysql_error();
      

      führt ohne Fehlermeldung zu einem Datumswert von 0000-00-00. Man darf die Anführungsstriche nicht vergessen. Außerdem werden führende Nullen benötigt.

      1. Tach!

        $abfrage = "INSERT INTO gkind (gdatum) VALUES (2007-03-12)";
        führt ohne Fehlermeldung zu einem Datumswert von 0000-00-00.

        Ist ja auch vollkommen gültige Syntax.

        Man darf die Anführungsstriche nicht vergessen.

        Irgendwie muss man ja das Minus zwischen den Zahlen einmal als Subtraktionen und ein anderes Mal als Datumsbestandteiltrenner unterscheiden können.

        Außerdem werden führende Nullen benötigt.

        Diese Aussage ist nicht richtig.

        dedlfix.

        1. Außerdem werden führende Nullen benötigt.

          Diese Aussage ist nicht richtig.

          $abfrage = "INSERT INTO gkind (gdatum) VALUES ('2007-03-12')"; fügt das Datum richtig ein,

          $abfrage = "INSERT INTO gkind (gdatum) VALUES ('2007-3-12')"; führt ohne Fehlermeldung zu einem Datumswert von 0000-00-00.

          ano

          1. Tach!

            Außerdem werden führende Nullen benötigt.
            Diese Aussage ist nicht richtig.
            $abfrage = "INSERT INTO gkind (gdatum) VALUES ('2007-3-12')"; führt ohne Fehlermeldung zu einem Datumswert von 0000-00-00.

            Bei mir nicht. Auch laut Handbuch sollte das nicht passieren: For values specified as strings that include date part delimiters, it is unnecessary to specify two digits for month or day values that are less than 10. (ungefähr in der Mitte der verlinkten Seite)

            Abgesehen davon ist es natürlich ein leichtes, wenn du den Wert formatieren lässt, das Formatzeichen für führende Nullen zu verwenden.

            dedlfix.

      2. Hello,

        $abfrage = "INSERT INTO gkind (gdatum) VALUES (2007-03-12)";

        mysql_query($abfrage);

        echo mysql_error();

        
        >   
        > führt ohne Fehlermeldung zu einem Datumswert von 0000-00-00.  
          
        Wie hast Du denn den SQL-Status abgefragt? Von alleine schlägt der bei PHP nicht durch, du musst ihn schon selber auswerten. <http://de2.php.net/manual/en/function.mysql-error.php>  
          
          
          
          
        Liebe Grüße aus dem schönen Oberharz  
          
          
        Tom vom Berg  
        ![](http://selfhtml.bitworks.de/Virencheck.gif)  
          
        
        -- 
         ☻\_  
        /▌  
        / \ Nur selber lernen macht schlau  
        <http://bergpost.annerschbarrich.de>
        
        1. Hallo Tom,

          Wie hast Du denn den SQL-Status abgefragt? Von alleine schlägt der bei PHP nicht durch, du musst ihn schon selber auswerten. http://de2.php.net/manual/en/function.mysql-error.php

          ja, genau. Augen auf im Straßenverkehr:  ;-)

          $abfrage = "INSERT INTO gkind (gdatum) VALUES (2007-03-12)";

          mysql_query($abfrage);

          echo mysql_error();

            
          Ist doch alles da ...  
            
          \*scnr\*  
           Martin  
          
          -- 
          Frauen sind wie Elektrizität: Fasst man sie an, kriegt man eine gewischt.  
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          
          1. Hello Ingrid,

            ja, genau. Augen auf im Straßenverkehr:  ;-)

            echo mysql_error();

            Ist doch alles da ...

            Hab ich vor lauter buntem Code einfach übersehen... Ich bitte um Verzeihung ;-O

            Woran liegts, dass keine Fehlermeldung kommt? Ohne Stringbegrenzer wird der Ausdruck vermutlich ausgerechnet werden. Aber daraus folgt dann nach MySQL-Systax immer noch eine numerische Größe. Dass die nicht zu einer Spalte mit Datumstyp passt, müsste die SQL-Schnittstelle des DBMS doch eigentlich merken können?

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Tach!

              Woran liegts, dass keine Fehlermeldung kommt?

              An der Default-Konfiguration, bei der MySQL ungültige Datumswerte zu '0000-00-00' ändert. Kann man irgendwo umstellen, denke ich.

              Ohne Stringbegrenzer wird der Ausdruck vermutlich ausgerechnet werden. Aber daraus folgt dann nach MySQL-Systax immer noch eine numerische Größe. Dass die nicht zu einer Spalte mit Datumstyp passt, müsste die SQL-Schnittstelle des DBMS doch eigentlich merken können?

              Values specified as numbers should be 6, 8, 12, or 14 digits long. If a number is 8 or 14 digits long, it is assumed to be in YYYYMMDD or YYYYMMDDHHMMSS format and that the year is given by the first 4 digits. If the number is 6 or 12 digits long, it is assumed to be in YYMMDD or YYMMDDHHMMSS format and that the year is given by the first 2 digits. Numbers that are not one of these lengths are interpreted as though padded with leading zeros to the closest length. (etwas unterhalb der Mitte der verlinkten Seite)

              dedlfix.

              1. Hello,

                Woran liegts, dass keine Fehlermeldung kommt?

                An der Default-Konfiguration, bei der MySQL ungültige Datumswerte zu '0000-00-00' ändert. Kann man irgendwo umstellen, denke ich.

                Ohne Stringbegrenzer wird der Ausdruck vermutlich ausgerechnet werden. Aber daraus folgt dann nach MySQL-Systax immer noch eine numerische Größe. Dass die nicht zu einer Spalte mit Datumstyp passt, müsste die SQL-Schnittstelle des DBMS doch eigentlich merken können?

                Values specified as numbers should be 6, 8, 12, or 14 digits long. If a number is 8 or 14 digits long, it is assumed to be in YYYYMMDD or YYYYMMDDHHMMSS format and that the year is given by the first 4 digits. If the number is 6 or 12 digits long, it is assumed to be in YYMMDD or YYMMDDHHMMSS format and that the year is given by the first 2 digits. Numbers that are not one of these lengths are interpreted as though padded with leading zeros to the closest length. (etwas unterhalb der Mitte der verlinkten Seite)

                Danke für den Link.
                Das ist mir schon wieder viel zu viel Automatik. Da entstehen eigentlich immer mehr Fehlermöglichkeiten, als vermieden werden können.

                Aber ob man irgendwo das Verhalten bezüglich Datenwerten konfigurieren kann, werde ich nochmal verfolgen.

                Liebe Grüße aus dem schönen Oberharz

                Tom vom Berg

                --
                 ☻_
                /▌
                / \ Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
        2. Hello,

          Wie hast Du denn den SQL-Status abgefragt? Von alleine schlägt der bei PHP nicht durch, du musst ihn schon selber auswerten. http://de2.php.net/manual/en/function.mysql-error.php

          Ich hab hinterher in die Datenbank gekuckt. mysql_error hat nichts angezeigt.

          ano