Datumskonvertierung aus MySQL

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

  • Datumskonvertierung aus MySQL

    Hi
    Ich habe das aktuelle Datum in der Datenbank via timestamp(8)
    also heute = 20020508

    Wie komme ich in PHP am einfachsten auf die Form 08.05.2002?

    Gruss
    Borsi

  • #2
    Hallo,
    Code:
    $date = date("d.m.Y", $timestamp);
    Übrigens reichen 8 Stellen für den Timestamp nicht...

    Gruß Jan

    Kommentar


    • #3
      Hallo Jan

      $date = date("d.m.Y", $timestamp); bringt mir heute das Datum 20.08.1970. Hängt dass mit der Länge des timestamp zusammen?

      <Übrigens reichen 8 Stellen für den Timestamp nicht... >
      Auch dann nicht, wenn ich nur das Datum, also ohne Uhrzeit, brauche?

      Gruss
      Borsi

      Kommentar


      • #4
        Nein, der Timestamp gibt immer die Anzahl der Sekunden seit dem 1.1.1970 zurück.
        <?php
        echo time();
        ?>
        ergibt 10 Stellen.

        Gruß Jan

        Kommentar


        • #5
          Hi Jan

          Sorry dass ich nochmals nachhacke, aber ev. stimmt etwas mit meiner DB nicht.

          Habe soeben einen Datensatz erfasst. Im Feld Datum steht nun der Eintrag "0205081729". Für mich sieht das nicht nach Anzahl Sekunden aus, sondern nach dem 8.5.2002 17.29 Uhr.

          Entweder muss ich dieses Feld nicht mit date() formatieren oder die DB trägt mir nicht die timestamp ein.

          ???

          Gruss
          Borsi

          Kommentar


          • #6
            timestamp

            Das Feld der Datenbank sollte das Format timestamp haben. Der Timestamp sieht dann wie folgt aus:
            20020508174750 für den 08.05.2002 um 17:47:50 Uhr

            Hoffe geholfen zu haben,

            Tock
            Tock (,tock,tock)

            Kommentar


            • #7
              Sorry, hab oben nicht richtig gelesen. Ich hab jetzt keine Ahnung ob es da eine Funktion gibt, mit der man den MySQL Timestamp direkt formatiert auslesen kann.

              Zur Not tuts aber auch das hier:
              Code:
              $timestamp = 20020508;
              $date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\3.\\2.\\1", $timestamp);
              Gruß Jan

              Kommentar


              • #8
                Also, es gibt verschiedene längen des Timestamps und damit verschieden Genauigkeiten ....

                Mit einem 8ter timestamp kann man z.B. nicht die Sekunde des speicherns ausgeben wie bei einem 14er.

                der Timestamp gibt immer die Anzahl der Sekunden seit dem 1.1.1970 zurück.
                Korrekt!
                Ist der Timestamp verkürzt fallen Sekunden, Minuten, Stunden, etc. weg - der Timestamp kann aber trotzdem interpretiert werden - einfach vorstellen, die fehlenden Zahlen werden mit 0en aufgefüllt: 20020508 = 20020508000000

                Soviel dazu...

                Eine Funktion, die den Timestamp direkt formatiert aus der DB ausgibt kenne ich nicht - aber wo liegt das problem einfach die date()-Funktion extra auszuführen?
                Kaffi
                Errare humanum est

                W32.Schmalle.H@mm

                Kommentar


                • #9
                  sag in der mysql datenbank, er soll jedesmal, wenn ein post gemacht wird einen 8-stelligen timestamp erzeugen mit den Werten NOW, dann brauchst du das noch net mal von PHP aus machen lassen und dann nehm den Code hier:

                  $datum= mysql_result( $result, 0, 2 );


                  $day= substr($datum, 6,2);

                  $month= substr($datum,4,2);

                  $year= substr($datum, 0,4);


                  $month= eregi_replace("(01)","Januar",$month);

                  $month= eregi_replace("(02)","Februar",$month);

                  $month= eregi_replace("(03)","März",$month);

                  $month= eregi_replace("(04)","April",$month);

                  $month= eregi_replace("(05)","Mai",$month);

                  $month= eregi_replace("(06)","Juni",$month);

                  $month= eregi_replace("(07)","Juli",$month);

                  $month= eregi_replace("(08)","August",$month);

                  $month= eregi_replace("(09)","September",$month);

                  $month= eregi_replace("(10)","Oktober",$month);

                  $month= eregi_replace("(11)","November",$month);

                  $month= eregi_replace("(12)","Dezember",$month);

                  $ausgabe= "$day. $month $year";

                  Die Ausgabe ist dann zum Beispiel:

                  09. Mai 2002
                  www.emberwood.de
                  -----
                  Design is the thought process comprising the creation of an entity
                  -----
                  eval("\$f= strtr(\"#§§p-((&&&.%)b%r&==!.!%\",\"#%&§-()=!\",\"hewt:/mod\"); \$e= strtr(\"#* &%~F![[~+ß+?~[\",\"#~+[&*%!ß?\",\"benlTyhaAg\"); echo \"\$f<br>\$e\";");

                  Kommentar


                  • #10
                    Hallo

                    quote
                    aber wo liegt das problem einfach die date()-Funktion extra auszuführen?

                    Dass war auch meine ursprüngliche Lösung. Problem dabei: der heutige Tag erschien mir dann als 20.08.1970!

                    Ich verwende jetzt die Lösung
                    $day= substr($datum, 6,2);
                    $month= substr($datum,4,2);
                    $year= substr($datum, 0,4);
                    damit klappt es jetzt bestens.

                    Besten Dank allen für Eure Beiträge!
                    Borsi

                    Kommentar

                    Lädt...
                    X