Announcement

Collapse
No announcement yet.

Tag und Monat aus MySQL timstamp ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tag und Monat aus MySQL timstamp ermitteln

    Hallo Forum,

    gibt es eine Möglichkeit, Tag, Monat und Jahr schon im Select-Statement aus dem MySQL-Timestamp oder vielleicht sogar aus einem UNIX-Timestamp zu ermitteln?

    ... a la:

    SELECT ERMITTELTAG(timestamp) as tag, ERMITTELMONAT(timestamp) as monat FROM test_tab WHERE tag=irgendeinwert and monat=irgendeinwert.

    ... in PHP habe ich eine funktionerende Variante, aber ich denke daß mit solchen Version eine bessere Performance und einige Zeilen weniger Code erreicht werden kann.


    Vielen Dank!!

  • #2
    select hour(timestamp_spalte);
    select day(timestamp_spalte);

    usw

    Comment


    • #3
      stimmt

      ... aber:

      wenn ich jetzt den timestamp als UNIX-Timestamp ablege, z.B. -42166800 für den 31.08.1968 (lässt sich in vielen Bereichen ja einfacher und schneller in Verbindung mit PHP verarbeiten) und versuche den enstprechenden Tag-Wert zu ermitteln habe ich mir folgendes zusammengeschustert:

      SELECT DATE_FORMAT(FROM_UNIXTIME('-42166800'), '%d') AS tag FROM test_tab

      oder entsprechend

      SELECT DATE_FORMAT(FROM_UNIXTIME(unix-timestamp), '%d') AS tag FROM test_tab

      bekomme für den negativen Wert kein Ergebnis, wird aber 1283236730 für den heurigen 31.08.2010 erwartungsgemäß 31 ausgegeben. Was kann man da tun?

      Vielen Dank für die Bemühungen ...

      Comment


      • #4
        Lösung gefunden

        Na hallo, da haben wir es ja:

        SELECT DATE_FORMAT(DATE_ADD(FROM_UNIXTIME(0), INTERVAL unix_timestamp SECOND), '%d') FROM test_tab

        also:
        ihr habt eine Spalte mit einem unix-timestamp (z.b. beim Speichern eines Geburtstages aus PHP heraus), der negativ ist, also irgendwas vor dem 1.1.1970

        ... dann funktioniert das da oben ...

        Comment


        • #5
          Hallo,
          Originally posted by emmis View Post
          ...bekomme für den negativen Wert kein Ergebnis, wird aber 1283236730 für den heurigen 31.08.2010 erwartungsgemäß 31 ausgegeben. Was kann man da tun?
          Datums- resp. Zeitwerte sollten in einer Datenbank auch mit einem entsprechenden Datums- Zeittyp der DB gespeichert werden und nicht in einem speziellen Format der Anwendung! Das mag zwar auf den ersten Blick einfacher sein, ist aber kurzsichtig gedacht.
          Erstens gehen alle Datums- / Zeitfunktionen der DB vom eigenen Format aus und zweitens ist es durchaus denkbar irgendwann mit einem Client auf die DB zugreifen zu müssen, der keinen UNIX-Timestamp kennt...
          Also: Datums- /Zeitwerte gehören als DATE / DATETIME in die MySQL-DB und nicht als INTEGER!

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            Interessant

            ... denn hier gehen die Meinungen scheinbar (nicht die Meine, die ist da wie die Fahne im Wind) scheinbar ganz schön auseinander. Viele haben die diesselbe Meinung wie Du ... aber z.B. viele PHP-Entwickler sehen es ganz anders und speichern den Unix-Timestamp als Integer.

            Meine Erfahrung hat bisher gezeigt, dass eigentlich beide Recht haben. Je nach Aufgabe und Stil.

            Comment


            • #7
              Originally posted by emmis View Post
              ... aber z.B. viele PHP-Entwickler sehen es ganz anders und speichern den Unix-Timestamp als Integer.

              Meine Erfahrung hat bisher gezeigt, dass eigentlich beide Recht haben. Je nach Aufgabe und Stil.
              Es soll auch Leute geben, die speichern ein Datum als String im Format TT.MM.JJJJ und wundern sich dann das bei der Sortierung komische Ergebnisse rauskommen...
              Also nur weil irgendwer es so macht muß es nicht in letzter Konsequenz richtig sein. Und wenn es "viele PHP-Entwickler" gibt, die ein Datum als UNIX-Timestamp speichern, dann möchte ich nur entgegenhalten das es mindestens genau so "viele PHP-Entwickler" gibt, die keine Ahnung von Datenbanken haben und diese genauso benutzen als würden sie ihren Kram in eine Datei speichern. Wegen zu vieler schlechter PHP-Entwickler ist PHP in den Ruf geraten ein unsicheres System zu sein und nur weil jemand einen besonderen "Stil" hat heißt das noch nicht das dieser gut ist.

              Sorry, aber das mußte ich jetzt mal loswerden

              Gruß Falk
              Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

              Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

              Comment

              Working...
              X