habbohighs: Zeit Format H:i:s in die DB

Hallo, zusammen.

Ich habe da ein kleines Problem.
Nämlich suche ich nach einer Möglichkeit die Zeit in "H:i:s" in die MySQL DB zu speichern.

Dazu verwende ich folgendes :

  
$zeit = date("H:i:s");  
mysql_query("INSERT db (..., zeit,...) VALUES(..., '".$zeit."',...)");  

Und dann habe ich ein Problem. Ich kenne Kein Format für diese Anfordeung.

Timestamp hat ja zB. "0000-00-00 00:00:00".

Wisst ihr was ich meine?

Mfg

  1. Und dann habe ich ein Problem. Ich kenne Kein Format für diese Anfordeung.

    Timestamp hat ja zB. "0000-00-00 00:00:00".

    Es gibt das Format time. Das dürfte das Mittel der Wahl für Dich sein, um Zeiten zu speichern.

    Viele Grüße
    der Bademeister

    1. Hello,

      Es gibt das Format time. Das dürfte das Mittel der Wahl für Dich sein, um Zeiten zu speichern.

      Man sollte Daten in einer Datenbank immer in dem verlustfreiesten Format speichern, also dem für die DB optimalen. Wie man das dann bei der Ausgabe formatiert, ist eine ganz andere Baustelle. Oft kann man das Ausgabeformat auch schon mit einer Funktion des DBMS festlegen und benötigt dann in der API überhaupt keine Behandlung mehr.

      Liebe Grüße aus Syburg bei Dortmund

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Zitat :

        Man sollte Daten in einer Datenbank immer in dem verlustfreiesten Format >>speichern, also dem für die DB optimalen. Wie man das dann bei der >>Ausgabe formatiert, ist eine ganz andere Baustelle. Oft kann man das >>Ausgabeformat auch schon mit einer Funktion des DBMS festlegen und >>benötigt dann in der API überhaupt keine Behandlung mehr.

        Hmm. Das würde also heissen, das es bei der TIMESTAMP bleibt.
        Aber wie kann ich dann nur die Stunden/Minuten/Sekunden auslesen lassen?

        Habe so was eben noch nie gemacht : )

        Mfg

        1. Hi,

          Habe so was eben noch nie gemacht : )

          was hast Du noch nie gemacht? In die Dokumentation des von Dir verwendeten Systems zu schauen? Dort nach Funktionen zu suchen, die sich mit Datum und Zeit beschäftigen? Vielleicht nach dem Stichwort "Format" zu suchen? Dann wird's aber mal Zeit ...

          Cheatah

          --
          X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. Hallo zusammen.

            Das Problem ist gelöst. War sehr simpel.
            $zeit = date("H:i:s")

            dann Tabellenfeld (DB) TIME abändern.

            Fertig.

            Danke viel mals.
            Dachte nicht, das es so simpel ist.

            Manchmal sucht man hald zuweit.

            Mfg

        2. Hmm. Das würde also heissen, das es bei der TIMESTAMP bleibt.
          Aber wie kann ich dann nur die Stunden/Minuten/Sekunden auslesen lassen?

          Ein Timestamp enthaelt Informationen, die einen absoluten Zeitpunkt beschreiben, das heisst eine Uhrzeit an einem bestimmten Datum. Wenn Du nur eine Zeit speichern willst, dann ist Timestamp das Falsche.

          Man sollte Daten in einer Datenbank immer in dem verlustfreiesten Format speichern, also dem für die DB optimalen.

          Ich weiss nicht genau, was Tom Dir (oder mir?) damit sagen wollte. Aber wenn Du eine Zeit als time speicherst, dann ist das verlustfrei, und noch verlusfreier als verlustfrei gehts nicht. Und Du hast dann nen Haufen schoener Moeglichkeiten, um Dir die Zeit formatiert ausgeben zu lassen.

          Viele Gruesse
          der Bademeister

          1. Hallo

            Hmm. Das würde also heissen, das es bei der TIMESTAMP bleibt.
            Aber wie kann ich dann nur die Stunden/Minuten/Sekunden auslesen lassen?

            Ein Timestamp enthaelt Informationen, die einen absoluten Zeitpunkt beschreiben, das heisst eine Uhrzeit an einem bestimmten Datum.

            Das macht ein Datum in Kombination mit einer Uhrzeit auch nur. :-)

            Wenn Du nur eine Zeit speichern willst, dann ist Timestamp das Falsche.

            Wieso? Der SQL-Timestamp (!=UNIX-Timestamp) gäbe z.B. für dein Posting den Wert 20080826134000 (Sekunden unbekannt, daher mit 00 angenommen) aus. Damit sind sowohl das Datum als auch die Uhrzeit direkt erreichbar. Eine Angabe mit DATETIME ist allerdings mMn umgänglicher[1].

            Man sollte Daten in einer Datenbank immer in dem verlustfreiesten Format speichern, also dem für die DB optimalen.

            Ich weiss nicht genau, was Tom Dir (oder mir?) damit sagen wollte.

            Vermutlich, dass DATETIME vorzuziehen ist, wenn auch das Datum im Datensatz gespeichert wird (ist ja nicht so unwahrscheinlich[2]) und somit eine Trennung in ein DATE- und ein TIME-Feld im Vergleich zu DATETIME unsinnig ist. Der Hinweis auf die Datums- und Zeitfunktionen bedeutet wohl, dass man auch aus einer Angabe im DATETIME-Format die Uhrzeit mit den Mitteln von SQL extrahieren kann.

            [1] Das bezieht sich auf die Lesbarkeit durch Menschen. Dem Computer hat sowas egal zu sein, jawollja!

            [2] Und genau das ist im Einsatzfall abzuwägen. Wenn habbohighs[3] sowieso schon ein Datum in den Datensätzen hat, sollte er auf DATETIME umstellen. Gibt es kein e Notwendigkeit für eine Datumsangabe, reicht natürlich auch ein Feld vom Typ TIME.

            [3] Meine Fresse, such er sich einen leichter schreibbaren Namen! ;-)

            Tschö, Auge

            --
            Die deutschen Interessen werden am Liechtenstein verteidigt.
            Veranstaltungsdatenbank Vdb 0.2
            1. Ein Timestamp enthaelt Informationen, die einen absoluten Zeitpunkt beschreiben, das heisst eine Uhrzeit an einem bestimmten Datum.

              Das macht ein Datum in Kombination mit einer Uhrzeit auch nur. :-)

              Wenn Du nur eine Zeit speichern willst, dann ist Timestamp das Falsche.

              Wieso? Der SQL-Timestamp (!=UNIX-Timestamp) gäbe z.B. für dein Posting den Wert 20080826134000 (Sekunden unbekannt, daher mit 00 angenommen) aus. Damit sind sowohl das Datum als auch die Uhrzeit direkt erreichbar. Eine Angabe mit DATETIME ist allerdings mMn umgänglicher[1].

              Man sollte Daten in einer Datenbank immer in dem verlustfreiesten Format speichern, also dem für die DB optimalen.

              Ich weiss nicht genau, was Tom Dir (oder mir?) damit sagen wollte.

              Vermutlich, dass DATETIME vorzuziehen ist, wenn auch das Datum im Datensatz gespeichert wird (ist ja nicht so unwahrscheinlich[2]) und somit eine Trennung in ein DATE- und ein TIME-Feld im Vergleich zu DATETIME unsinnig ist.

              Die Frage war, wie er seine Zeit in seine Datenbank speichern soll. Deshalb gehe ich davon aus, dass er - ja genau - eine Zeit in seine Datenbank speichern will.
              Datetime und Timestamp sind schoene, handliche Formate, da gebe ich Dir Recht. Aber nicht, um eine Uhrzeit zu speichern. Es geht nicht darum, dass man bei den Formaten nicht leicht die Uhrzeit ermitteln koennte, sondern darum, dass man Datenmuell speichern wuerde, wenn man nur eine Uhrzeit zum Speichern hat und sie in ein datetime- oder timestamp-Format steckt.

              [3] Meine Fresse, such er sich einen leichter schreibbaren Namen! ;-)

              Vielleicht kannst Du ihn ueberreden, sich ab jetzt [3] zu nennen :-)

              Viele Gruesse
              der Bademeister

            2. Boa. Langsam werwirrt mich das ganze ein wenig :| .

              Könnte ich denn auch so was wie das hier machen?

              [1.] Tabellenfeld --> zeit *** NOT NULL,

              [2.] $zeit = time() //gibt ja sekunden aus

              [3.] mysql_query("INSERT db(zeit) VALUES('".$zeit."')"); //einfügen in DB

              [4.] $zeit = mysql_query("SELECT zeit FROM db"); //zeit aus der DB holen

              [5.] round($zeit/3600,0) = $stunden //sekunden geteilt durch 3600 gibt Stunden

              [6.] round($stunden/60,0) = $minuten //stunden geteilt durch 60 gibt Minuten

              [7.] $sekunden = ($zeit - ($stunden + $minuten));

              [8.] echo "Es ist $stunden:$minuten:$sekunden .";

              ***Bin mir nicht sicher, was man nehmen muss. Timestamp?

              1. Hallo

                Boa. Langsam werwirrt mich das ganze ein wenig :| .

                Könnte ich denn auch so was wie das hier machen?

                Kannst du, mit allem daraus folgendem Heckmeck.

                [1.] Tabellenfeld --> zeit *** NOT NULL,

                [2.] $zeit = time() //gibt ja sekunden aus

                Ja, die Anzahl der seit dem 01.01.1970 00:00:00 vergangen Sekunden. Hilft dir das weiter?

                ...

                [5.] round($zeit/3600,0) = $stunden //sekunden geteilt durch 3600 gibt Stunden

                [6.] round($stunden/60,0) = $minuten //stunden geteilt durch 60 gibt Minuten

                [7.] $sekunden = ($zeit - ($stunden + $minuten));

                Umständlicher geht's nicht. Zumal es sowohl für MySQL als auch für PHP Datums- und Zeitfunktionen gibt, die dir einen UNIX-Timestamp in andere Zeitformate umrechnen.

                Hast du überhaupt gelesen, was dir geschrieben wurde? Es _gibt_ bereits einen Datentyp TIME, der eine Uhrzeit im 24-Stunden-Format auf folgende Weise abspeichert: 00:00:00 (H:i:s), genau so, wie du es erfragt hast. Was willst du noch mehr?

                Tschö, Auge

                --
                Die deutschen Interessen werden am Liechtenstein verteidigt.
                Veranstaltungsdatenbank Vdb 0.2
            3. Hello,

              Ich weiss nicht genau, was Tom Dir (oder mir?) damit sagen wollte.

              Verlust entsteht, wenn die zu speichernde Eigenschaft entweder in ihrem Wertebreich oder durch ihre Granularität eingeschränkt wird.

              Datetime hat einen größeren Wertebereich als Timestamp bei mMn gleicher Granularität.

              Das bedeutet, dass Datetime dem Typ Timestamp vozuziehen ist, wenn nicht wieder die Frage des Speicherplatzes entscheidend wird. Außerdem wäre noch zu untersuchen, ob Timestamp nicht inzischen sowieso als Datetime gespeichert wird...

              Liebe Grüße aus Syburg bei Dortmund

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
  2. Hi,

    Nämlich suche ich nach einer Möglichkeit die Zeit in "H:i:s" in die MySQL DB zu speichern.

    welchen Vorteil hätte es, eine Zeit in einem bestimmten Format zu speichern? Es reicht, wenn in der Datenbank erkennbar die jeweilige Zeit hinterlegt ist; ein bestimmtes Format wählst Du beim Auslesen oder bei der Verarbeitung.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes