timp Unix si Unix timestamp-ul (MySQL, PHP, JavaScript)

timp Unix si Unix timestamp-ul (MySQL, PHP, JavaScript)

Să razberemsyas ​​cele pentru care timpul necesar Unix si Unix Timestamp, precum și să le dea un concept clar.

Voi încerca să dea un exemplu pentru a explica diferența dintre aceste două concepte.







La momentul scrierii acestui mine a posta, timp Unix este egal cu 1346765877.

Sincer, prea mult sens pentru a separa cele două concepte, în opinia mea, nu, dar este încă util să aibă o idee care, deoarece reprezintă Unix timp. dar, de asemenea, de ajutor pentru a înțelege că cel mai mare număr posibil de secunde din anul 1970, are o limită!

Sfârșitul Unix epocă va veni în 2038

Realitate: Numărul binar maxim în sistemele de 32 de biți este numărul 01111111 11111111 11111111 11111111 plasându-l în sistemul zecimal, obținem numărul 2147483647.

Testa aceasta teorie pe exemplul ilustrativ este foarte simplu:

  • Deschideți standard de calculator pentru Windows, apăsați ALT + 3. pe care-l transforma într-un fel de inginerie inversă;
  • Instalați modul de 4 octeți, și tipul de intrare zecimală;
  • Scrieți numărul 2147483647;

timp Unix si Unix timestamp-ul (MySQL, PHP, JavaScript)

  • Notă privind reprezentarea numărului în sistem binar;
  • Adăugați la numărul unu;

timp Unix si Unix timestamp-ul (MySQL, PHP, JavaScript)

  • adăugând rezultatul va fi un număr negativ!

Dacă continuați să adăugați unul, atunci vom obține un circuit ciclic.

De fapt, nu ar trebui să fie trist, deoarece dezvoltatorii de sisteme informatice din ce în ce sunt de adoptare a 64 de arhitecturi de biți în utilizarea pe scară largă. Să credem că ei vor avea timp să 2038.

Lucrul cu unix-timestamp

Un punct foarte important atunci când se ocupă cu unix-timestamp în PHP si MySQL, este necesitatea de a înțelege în mod clar avantajele și dezavantajele unui astfel de format de dată.







De exemplu, TIMESTAMP nu se obisnuiasca cu sarcina de evenimente sau evenimente din viitorul îndepărtat istorice. Întregul set de date este limitată la perioada cuprinsă între 1970 până la începutul anului 2038. Dacă specificați o dată, care merge dincolo de 2038, nu va interpreta corect sistemul pe 32 de biți.

Recunoscând această limitare, se ridică întrebarea logică: „? De ce ar trebui să deranjez cu o reprezentare a unei date în secunde“

Când trebuie să folosesc Unix Timestamp

Pentru a reprezenta un moment dat într-un sistem convențional pentru noi să-l măsoare, este nevoie de 8 octeți, iar pentru unix-timestamp jumătate - 4 octeți.

Suma de economii de date, în opinia mea, principalul avantaj incontestabil și în utilizarea Unix timpului.

În plus, există o serie de nuanțe disponibile utile atunci când se lucrează cu UNIX TIMESTAMP MySQL. Și pentru că toate informațiile trebuie să fie stocate pe serverul de baze de date, iar el la rândul său, are o serie de avantaje atunci când se lucrează cu Unix marcaje de timp, alegerea în favoarea unix-timestamp poate fi justificată în mod corespunzător de următoarele dispoziții.

În MySQL, oferă Timestamp tipul de date corespunzător pentru a lucra cu formatul de unix-timp setarea pe care le obține imediat un avantaj util asupra formatelor standard Data și DATETIME. Avantajul este că etapele de adăugarea unui nou record la masă, o coloană cu acest tip de date este completat automat. Acest lucru înseamnă că putem salva nu numai pe cantitatea de date, dar, de asemenea, cu privire la timpul de procesare al serverului web.

Pentru a întări cuvintele cu fapte ridică următoarea problemă: atunci când înregistrarea unui nou utilizator în sistem, trebuie să introduceți data la care se adaugă la baza de date.

În cazul în care tipul de câmp stochează data în tabel - DATETIME. cererea de script PHP va arata ceva de genul:

Există, de asemenea, un minus. în cazul în care numărul de tip câmp TIMESTAMP, actualizat în mod automat, doar primul.

Are sens să folosească INT în loc de timestamp-ul

Mulți programatori care lucrează cu unix-timestamp, utilizând formatul întreg int (11). Aceasta nu este o abordare rațională a problemei, deoarece marca temporală pentru MySQL oferă o serie de funcții utile care afectează viteza cu el. De aceea păstrarea, ștampila de timp în INT, ne privăm de orice fel de suport server de acest format. Aceasta este aproximativ aceeași ca și în varchar ID-ul magazinului de tip (11).

Cu toate acestea, există o justificare de stocare unix TIMESTAMP INT. La migrarea bazelor de date între diferite tipuri de conflict SGBD pot apărea, și anume tip de marcaje temporale poate fi nefamiliare într-o bază de date. În acest caz, utilizarea int va avea un avantaj, deoarece acest format este disponibil în toate bazele de date.

Scurtă descriere a tipurilor de calendar MySQL

TIMESTAMP - tipul de date pentru a stoca data și ora. Datele sunt stocate ca numărul de secunde de la începutul „erei de Unix.“ Domeniul de valori: 1970-01-01 00:00:00 - 12/31/2038 00:00:00. Acesta ocupă 4 octeți.

DATA - tip de date pentru datele de magazin. Gama: 01/01/1000 - 9999-12-31. Este nevoie de 3 octeți.

Datetime - tip de date pentru a stoca data și ora. Gama: 01/01/1000 00:00:00 - 9999-12-31 00:00:00. Este de 8 octeți și stocate ca un YYYYMMDDHHMMSS./p număr>

AN - tipul de date pentru a stoca anul. Gama este 1901 - 2155. Este nevoie de 1 octet.

TIME - tipul de date pentru a stoca timpul. Gama: -828: 59: 59-828: 59: 59. Este nevoie de 3 octeți.

Data de traducere în unix

Este timpul pentru a pune unele funcții utile pentru a transfera data în unix dată și oră și înapoi de la unix-timp într-o dată ușor de citit.

Cum să obțineți curent UNIX timp