MYSQL Datum speichern

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

  • MYSQL Datum speichern

    Hallo,

    ich habe einige Fragen zum Ablegen eines Datums in einer MySQL DB.
    MYSQL stellt ja folgende Spaltentypen zur verfügung:
    DATE = 3 Bytes
    DATETIME = 8 Bytes
    TIMESTAMP = 4 Bytes

    Jetzt habe ich öfters schon gesehen, dass viele das Datum als Timestamp in einem int(11)-Feld ablegen.
    INT = 4 Bytes
    Wäre also gegenüber des DATE-Feldes 1 Byte mehr.

    Welche Vorteile ergeben sich durch die Speicherung des Unix-Timestamps
    in einem int(11) Feld und wieso wird das gemacht?
    Wie speichert Ihr ein Datum in einer MySQL DB und wieso?

    Gruß
    Oneside
    Luxus Magazin
    Luxus Shops

  • #2
    Re: MYSQL Datum speichern

    cool, doppelpost...*nach unten zeig*

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Re: MYSQL Datum speichern

      Original geschrieben von oneside
      Welche Vorteile ergeben sich durch die Speicherung des Unix-Timestamps in einem int(11) Feld und wieso wird das gemacht?
      für MySQL gar keine, sondern nur Nachteile, weil man nicht mehr die Datums-Funktionen benutzen kann (bzw. höchstens noch mit nem full-select, was in Sachen Performance etwa einem Tretroller gleich kommt...)

      Wie speichert Ihr ein Datum in einer MySQL DB und wieso?
      DATETIME
      Speichert Datum und Uhrzeit, man kann die Datums-Funktionen von mysql verwenden und wenn man tatsächlich mal irgendwann einen UNIX-Timestamp benötigt, kann man das Ding entweder mit mysql schon beim SELECT umwandeln (weiß gerade die passende Funktion nicht), oder in php mit strtotime ... aber ich bin ehrlich, ich brauche sie selten bis gar nicht *shrugs* (was soll man auch mit einem Datum, was man nicht sofort lesen kann? ... schwachsinniges Format <- meine Meinung)

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        Danke, klingt mir plausabel.
        Trotzdem verstehe ich nicht, wieso das in einigen größeren Open-Source Projekten gemacht wird? Es muss deshalb ja auch irgendwie Vorteile haben oder?
        Luxus Magazin
        Luxus Shops

        Kommentar


        • #5
          Ja, das hat z.B. den Vorteil, dass du vergangene Uhrzeiten mit der jetzigen vergleichen kannst.

          Zum Beispiel legst du bei der Installation deines Scripts in irgendeiner Tabelle das Datum in der Form eines UNIX Timestamps ab, dann kannst du durch einfache Rechnungen feststellen, wieviele Stunden/Sekunden/Minuten/Tage/Wochen/Monate/Jahre vergangen sind...

          Das braucht man z.B. auch für einen Spamschutz (zumindest habe ich das so gemacht^^).

          Gruß
          icecream
          icedcream.de Webdesign Regensburg

          Kommentar


          • #6
            Der Test now()-zeitpunkt > 20 Minuten z.B. geht nur mit Unix_Timestamp. Hingegen geht now() > zeitpunkt + 20 Minuten in mySQL, die Funktion ist DATE_ADD, z.B. NOW() > DATE_ADD (zeitpunkt, INTERVAL '0:20:00' HOUR_SECOND) . Man kann sogar NOW() > zeitpunkt + INTERVAL '0:20:00' HOUR_SECOND wheren. Es ist mir aber (noch) kein überschaubares Tutorial bekannt und im RTFM sind die Funktionen nach Arten und Typen (DATETIME, DATE, TIME) mixed.

            Kommentar


            • #7
              Original geschrieben von globqluqqlo
              Es ist mir aber (noch) kein überschaubares Tutorial bekannt und im RTFM sind die Funktionen nach Arten und Typen (DATETIME, DATE, TIME) mixed.
              steht alles im Manual. (btw. RTFM != Manual, but read the fucking manual....) und im Endeffekt sind DATEIME, DATE und TIME ja auch das gleiche. DATETIME hat alles, DATE hat nur Datum, TIME hat nur Zeit. Du kannst aber im Endeffekt mit DAY(), MONTH(), HOUR(), etc. die Dinger so gegeneinander anpassen, dass du alle miteinander vergleichen kannst.
              Wie gesagt, steht alles im Manual ^^,

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                steht alles im Manual.
                Ja eine Schreibe ist noch keine Lese.

                Endeffekt sind DATEIME, DATE und TIME ja auch das gleiche.
                Und im Endeffekt laufen deine Master-Programme damit......, aber meine juniorskripte wollten nicht.
                Zuletzt geändert von globqluqqlo; 15.03.2006, 21:25.

                Kommentar

                Lädt...
                X