Ankündigung

Einklappen
Keine Ankündigung bisher.

Milisekunden in dateformat abspeichern und auslesen

Einklappen

Neue Werbung 2019

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

  • Milisekunden in dateformat abspeichern und auslesen

    hey,

    ich muss eine exakte zeit abspeichern mitmilisekunden.
    nehmen wir mal:
    Start: 11:30:08,20
    Ziel: 11:43:02,80

    frage ist nun in welchem datentyp ich das speicher. ich habs mit datetime versucht, aber ich krieg die milisekunden nicht raus:
    select DATE_FORMAT(start,'%H:%i:%s:%Ms') as startFormat.

    wie speicher ich oben genannte zeiten in dateTime rein?
    ich weiss, dass ich ein datum davor setzen muss 0000-00-00 ZEIT
    aber wie muss man die milisekunden schrieben? komma oder punkt, doppelpunkt?

    und wie bekomme ich NUR die Uhrzeit mit Milisekunden.

    Ich muss später die Differenz von Start und Ziel ausrechnen und als Laufzeit angeben.

    ich krieg die milisekunden einfach nicht gespeichert....


  • #2
    Deine Frage klingt, als ob du dich noch kein bisschen selber zu informieren versucht hättest.

    Lies im Handbuch der DB (ich nehme an, es geht um MySQL) nach bzgl. der Datums- und Zeit-Datentypen.

    Kommentar


    • #3
      A microseconds part is allowable in temporal values in some contexts, such as in literal values, and in the arguments to or return values from some temporal functions. Microseconds are specified as a trailing .uuuuuu part in the value. Example:

      mysql> SELECT MICROSECOND('2010-12-10 14:12:09.019473');
      +-------------------------------------------+
      | MICROSECOND('2010-12-10 14:12:09.019473') |
      +-------------------------------------------+
      | 19473 |
      +-------------------------------------------+

      However, microseconds cannot be stored into a column of any temporal data type. Any microseconds part is discarded.
      Andere sagen „geht nicht“ dazu. Du kannst allenfalls einen String benutzen und PHP-Microsekunden.

      [edit]
      Deine Frage klingt, als ob du dich noch kein bisschen selber zu informieren versucht hättest.

      Lies im Handbuch der DB (ich nehme an, es geht um MySQL) nach bzgl. der Datums- und Zeit-Datentypen.
      In der Tat. Du kannst also froh sein, dass ich noch in Osterlaune bin..
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar


      • #4
        ich informier mich seit zwei stunden und werkel rum. foren sind wirklich die letzte möglichkeit bei mir...!

        das handbuch sagt mir DATETIME hat die folgende time range:
        "00:00:00 through 23:59:59.997"

        wenn ich nicht ganz blind bin, dann sieht man hier recht deutlich, dass man also eine dreistellige millisekundenzahl anhängen kann?!
        oder hab ich hier verständnisprobleme?

        ich muss dann doch also 11:40:08.300 in DATEFORMAT speichern können (natürlich mit dem date davor)
        und das ganze wieder auslesen können mit einem date_format?!

        der nutzer muss später die startzeit und zielzeit eintragen und da werden leider auch milisekunden drangehängt werden.
        php milliseconds bringt mir hier nichts.
        ich muss später mit einem datedifference im sql gleich die datediff berechnen um die laufzeit zu bekommen. (muss nicht, aber so wärs wohl am einfachsten...wieso auch auf php functionen hier umständlicherweise zurückgreifen?)

        ich hab wenig lust einen String zu speichern mit dem ich nachher nicht rechnen kann...

        Kommentar


        • #5
          Zitat von ripmavespa Beitrag anzeigen
          das handbuch sagt mir DATETIME hat die folgende time range:
          "00:00:00 through 23:59:59.997"
          Ich weiss nicht, wo du liest, aber mit sagt MySQL :: MySQL 5.1 Reference Manual :: 10.3.1 The DATETIME, DATE, and TIMESTAMP Types folgendes:
          MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.

          Zitat von ripmavespa Beitrag anzeigen
          ich muss dann doch also 11:40:08.300 in DATEFORMAT speichern können (natürlich mit dem date davor)
          und das ganze wieder auslesen können mit einem date_format?!
          Die genannte Seite sagt weiterhin,
          A microseconds part is allowable in temporal values in some contexts, such as in literal values, and in the arguments to or return values from some temporal functions. Microseconds are specified as a trailing .uuuuuu part in the value. [...]
          However, microseconds cannot be stored into a column of any temporal data type. Any microseconds part is discarded.
          Was das noch für Verständnisprobleme offen lassen kann, ist mir rätselhaft.

          Kommentar


          • #6
            [...]cannot be stored[...]

            ich frage mich dann gerade wie ich ein workaround zu dem problem bewerkstellige....??!!
            start und zieleingaben als string, den speichern und kompliziert as hell den string ausnandernehmen um später damit rechnen zu können?
            übelste validierungen, damit der user es auch in der form H:m:s,Ms eingibt?
            ist das im sinne des erfinders... ich bin sicher nicht der erste der vor dieser problemstellung steht...

            Kommentar


            • #7
              Die Auflösung der Datumstypen reicht für die meisten Anwendungen durchaus aus.

              Wenn du in einem speziellen Fall mehr brauchst - dann könntest du den Millisekunden-Anteil in einem extra Feld ablegen.
              Differenzen in Sekunden kannst du dann mit den vorhandenen Datumsfunktionen errechnen - den Millisekundenteil musst du dann noch dazurechnen.

              Kommentar


              • #8
                Ermittle die Laufzeit wäre der Ausführung und schreibe die Millisekunden einfach in eine INT-Feld und gut. Wenn Du noch das Datum brauchst, machst schreibe ne Timestamp in ein separates Feld. Man muss ja nicht alles komplizierter machen, als es ist.

                Kommentar

                Lädt...
                X