kostenloser Webspace werbefrei: lima-city


mySQL: wann wird int zu klein für Timestamp ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    juwely

    juwely hat kostenlosen Webspace.

    Hallo

    Der (Unix) Timestamp zählt ja die Sekunden seit 01.01.1970

    zur Zeit ist er 10 Zeichen lang, z.B:
    1353753033


    daher kann man den (noch) in MySQL Speichern mit
    int (10) UNSIGNED


    Aber ab welchen Datum wird der (Unix) Timestamp zu "groß" für int ???
    und sollte man jetzt schon Speichern von Timestamp in MySQL mit bigint() machen ?

    Laut MySQL Doku: int() UNSIGNED max = 4294967295
    .. ist das der Wert bei 32bit oder bei 64bit Server ?
    Bei der Doku: http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html steht keine Hinweis dazu ?!

    ab wann (welches Datum) ist int() UNSIGNED zu "klein" für einen (Unix) Timestamp ? (bei 64 bit)
    und sollte man den lieber gleich als bigint() Speichern? .. wieviele max. Stellen hat bigint() UNSIGNED ?

    PS: wenn der Server (http) auf 64 bit läuft, ist dann MySQL automatich auch 64bit ?
    bzw. wie bekomme ich heraus, ob der MySQL Server auf 64bit läuft ?

    und .... wie kann ich in PHP (nicht in MySQL) eine (int)$variable auf UNSIGNED setzen ?

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Wie wäre es, wenn du für Timestamps auch den dafür vorgesehenen Datentyp
    TIMESTAMP
    nutzen würdest? Näheres dazu gibt es hier.
  4. juwely schrieb:
    Hallo

    Der (Unix) Timestamp zählt ja die Sekunden seit 01.01.1970

    zur Zeit ist er 10 Zeichen lang, z.B:
    1 353 753 033


    daher kann man den (noch) in MySQL Speichern mit
    int (10) UNSIGNED


    Aber ab welchen Datum wird der (Unix) Timestamp zu "groß" für int ???
    und sollte man jetzt schon Speichern von Timestamp in MySQL mit bigint() machen ?

    Wenn Du nicht dem Vorschlag von hackyourlife folgen magst, solltest Du dir, wenn ich mich nicht verrechnet habe, in ca. 275 (Natürlich hab ich mich verrechnet. :slant:) 94 Jahren Gedanken machen. :biggrin:

    Beitrag zuletzt geändert: 24.11.2012 13:02:21 von fatfreddy
  5. Ich bilde mir ein, dass ich irgendwo gelesen hab, dass sich der Typ timestamp automatisch anpassen wird. Ansonsten... INT(11) :D
  6. Autor dieses Themas

    juwely

    juwely hat kostenlosen Webspace.

    ok, Datum als INT (timestamp) zu speichernt macht wenig Sinn, das sehe ich ein,
    u.a. weil ... wenn man Geburtsdatum Speichern will, braucht man ja auch vor 1970


    fatfreddy schrieb:
    Wenn Du nicht dem Vorschlag von hackyourlife folgen magst, solltest Du dir, wenn ich mich nicht verrechnet habe, in ca. 275 (Natürlich hab ich mich verrechnet. :slant:) 94 Jahren Gedanken machen. :biggrin:


    hmmm .. ich habe was gefunden .... Timstamp passit in int bis: UTC 2038-01-19 (03:14:07)
    also wie kommst Du auf 94 Jahre ... sind eher noch 25 Jahre und ein paar Zerquetschte :)

    ahhh ... ok ... kapiert .... gemeint ist dabei wahrscheinlich int mit Vorzeichen,
    ... bei int UNSIGNED ist es dann bis: 2106-02-07 (01:28:15) ... daher die 94

    zum Datentyp TIMESTAMP
    ... TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.

    ... also auch "nur" bis 2038
    das bringt also gegenüber int nicht mehr, gegenüber int UNSIGED sogar weniger

    aber mit Datentyp DATETIME
    ... DATETIME ... range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59' UTC

    ... schon besser, auch vor 1970 und bis zum Jahr 9999

    sehe ich das richtig, Datentyp TIMESTAMP (und DATETIME)
    wird wie ein Datum-String gespeichert ? ... im Format:
    YYYY-MM-DD HH:MM:SS


    ... quasi wie ein VARCHAR (19), nur dass es "anders" ausgelesen werden kann
    oder ist TIMESTAMP anders als DATETIME ... in der Doku sieht beides gleich aus

    also wenn Datentyp DATETIME (oder TIMESTAMP) ist, dann geht sowas:
    SELECT * FROM table where datum1 BETWEEN '2012-10-01 00-00-00' AND '2012-11-24 23:59:59'

    was mit VARCHAR nicht gehen würde ?


    und ... Frage zum Verständnis zu int in PHP und MySQL
    bei Server 64 bit System ist PHP_INT_MAX = 9223372036854775807
    aber in MySQL ist Maximum von int (SIGNED) = 2147483647 .. bzw: int (UNSIGED) = 4294967295

    also ist int in MySQL immer "nur" 32bit int .... und bigint dann das 64bit int ???
    ... gibt es bei MySQL keinen Unterschied ob auf 32bit oder 64 bit Server ?



  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!