Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Deutsches Zeitformat und MYSQL-TabellenTyp

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Deutsches Zeitformat und MYSQL-TabellenTyp

    Hi. Ich möchte das deutsche Zeitformat aus einem Timestamp
    ( e.g. now() ) gewinnen.

    Welche Funktion ist dazu am besten geeignet?
    Mit date() zum Beispiel bekomme ich nach Anweisungen
    und Beispielen von php.net aus einem Timestamp
    (2008-09-29 21:34:39) "01.01.70" raus (auf Uhrzeit habe ich jetzt
    keinen Wert gelegt, denke aber ich werde diese auch irgendwann brauchen).

    Wenn das mit date() nicht funktioniert, sollte ich vllt. den Tabellen-Typ
    in der MySQL-DB ändern, vllt von timestamp auf datetime setzen?

    Wäre für schnelle Abhilfe sehr dankbar,

    gruß Jabs


    //edit: sorry is vielleicht nicht ganz klar geworden:
    Ich möchte die Uhrzeit auf jedenfall mitspeichern, da ich
    das Tabellenfeld auf verschiedenen Pages mal mit, und mal ohne Uhrzeit ausgeben möchte

  • #2
    date () verarbeitet einen INT Wert. Schau Dir mal strtotime () an oder nutze ein Datenbank-Casting, um eine INT Typ zu liefern.

    Kommentar


    • #3
      Zitat von nikosch Beitrag anzeigen
      ....Schau Dir mal strtotime () an oder nutze ein Datenbank-Casting, um eine INT Typ zu liefern.
      strtotime() ist optimal für meine Bedürfnisse, dann kann
      ich mit date() immer noch mit 1 Zeile entscheiden,
      ob die Uhrzeit mit angezeigt werden soll oder nicht

      Und da ich viel mit PHP-MyAdmin arbeite kann ich auch
      den Timestamp besser ablesen, als wenn er mir als INT vorliegen würde.

      Ich danke dir für deine schnelle Hilfe!
      (P.S: lol, deine Sig ist absolut cool^^)

      Kommentar


      • #4
        Als zweite Möglichkeit meinte ich ein Casting bei der Abfrage:
        PHP-Code:
        SELECT CAST(timestamp_col AS DATETIMEFROM tbl_name
        müßte eigentlich einen geeigneten Timestamp-INT Wert liefern.

        PS: Die Signatur ist ein Original-Zitat!

        Kommentar


        • #5
          achso
          Hm, ich schau's mir mal an.

          Kommentar


          • #6
            NOW() (ich geh jetzt mal davon aus, dass du die entsprechende SQL-Funktion meinst) liefert ja keinen Timestamp, sondern ein Resultat vom MySQL-Typ DATETIME. Und dieses kannst du direkt mit der MySQL-Funktion DATE_FORMAT() entsprechend formatieren. Es macht wenig Sinn, diesen Wert zuerst in einen INT-Wert umzuwandeln und dann wieder zu formatieren.

            Kommentar


            • #7
              Das kann schon sinnvoll sein, wenn man bspw. in Templates variable Datumsformate anbieten will.

              Kommentar


              • #8
                Zitat von nikosch Beitrag anzeigen
                Das kann schon sinnvoll sein, wenn man bspw. in Templates variable Datumsformate anbieten will.
                Jap seh ich auch so aber ich persöhnlich mag keine Timestamps in der DB das macht ein arbeiten direkt auf der DB wenns mal notwendig ist nur unnötg aufwendig. Dann lieber Datetime verwenden und mittels UNIX_TIMESTAMP zurückgeben und im PHP Script mittels date() wieder formatieren ist zwar doppelt gemoppelt aber es ersparrt einiges an Aufwand in der späteren Pflege und evl. debugging.

                Kommentar


                • #9
                  Zitat von nikosch Beitrag anzeigen
                  Das kann schon sinnvoll sein, wenn man bspw. in Templates variable Datumsformate anbieten will.
                  Das mag schon sein, hat aber absolut nichts mit der Fragestellung zu tun. Es geht ja nur darum, ein MySQL-Datum (DATETIME, nicht Timestamp) formatiert auszugeben.

                  Kommentar


                  • #10
                    Das mag schon sein, hat aber absolut nichts mit der Fragestellung zu tun. Es geht ja nur darum, ein MySQL-Datum (DATETIME, nicht Timestamp) formatiert auszugeben.
                    Ja und? Die Argumentation verstehe ich nicht. Wenn ich das nunmal nicht in der Query fest codieren will, muß ich eben alles auf ein Einheitsformat runterbrechen und später wie gewünscht formatieren.

                    @HStev: Einziges Problem ist mal wieder die 1970 Problematik.

                    Kommentar


                    • #11
                      Zitat von nikosch Beitrag anzeigen
                      @HStev: Einziges Problem ist mal wieder die 1970 Problematik.
                      Inwiefern? Beispiel?

                      Kommentar


                      • #12
                        Nunja, Timestamps nutzen eben eine Sekundenmenge seit einer Startzeit. Früher liegende Daten lassen sich damit nicht abbilden. MySQL unterstützt imho auch negative Timestamps, bei PHP bin ich mir gerade nicht sicher.

                        Kommentar


                        • #13
                          Datetime's sind im prinzip auch nur Timestamps bisher kam mir das 1970 Problem noch nicht unter auch wenn ich mit UNIX_TIMSTAMP u. FROM_UNIXTIME gearbeitet habe naja aber so oft sollte dieses Problem ja auch nicht auftreten.

                          Kommentar


                          • #14
                            Mir schon. Gibt schon noch ne Generation mit Geburtsdaten von 1970. Von archivarischen Daten gar nicht zu reden.

                            Und nein - die Typen sind nicht synonym:
                            Remember that although DATETIME, DATE, and TIMESTAMP values all can be specified using the same set of formats, the types do not all have the same range of values. For example, TIMESTAMP values cannot be earlier than 1970 or later than 2038. This means that a date such as '1968-01-01', while legal as a DATETIME or DATE value, is not valid as a TIMESTAMP value and is converted to 0.
                            Storage Requirements for Date and Time Types
                            Code:
                            Data Type Storage Required 
                            DATE       3 bytes 
                            TIME       3 bytes 
                            DATETIME   8 bytes 
                            TIMESTAMP  4 bytes

                            Kommentar


                            • #15
                              Zitat von nikosch Beitrag anzeigen
                              Mir schon. Gibt schon noch ne Generation mit Geburtsdaten von 1970. Von archivarischen Daten gar nicht zu reden.

                              Und nein - die Typen sind nicht synonym:

                              um das Thema noch mal aufzuwecken ...
                              naja aber der engl. Text besagt ja das Timestamp und Datetime das gleiche Problem haben ...also ist es kein wirklicher Nachteil von Datetime gegenüber Timestamp ... Datetime hat halt nur den Vorteil mehr das es formartiert ist.


                              Aber davon abgesehen welche Alternativen gäb es dann noch?
                              Hab mich damit noch nicht auseinandergesetzt weil bisher nie gebraucht.

                              Kommentar

                              Lädt...
                              X