Computer finestre Internet

Convertitore Unix. L'attuale epoca di Unix. Come ottenere il tempo Unix in

  • UTC: L'ora sul meridiano primo è chiamata Tempo Coordinato Universale. La mancata corrispondenza dell'acronimo è stata causata dalla necessità della sua universalità per tutte le lingue.
  • GMT: In precedenza, al posto dell'UTC veniva utilizzata l'ora di Greenwich (GMT), poiché il primo meridiano veniva scelto per passare attraverso l'Osservatorio Reale di Greenwich.
  • Altri fusi orari possono essere scritti come offset dall'UTC. Ad esempio, Australian Eastern Standard Time (EST) viene scritto come UTC + 1000, il che significa che le 10:00 UTC sono le 20:00 EST dello stesso giorno.
  • Estate non influisce sull'UTC. Questa è solo una decisione politica per cambiare il fuso orario (offset dall'UTC). Ad esempio, il GMT è ancora in uso: è l'ora nazionale britannica in inverno. In estate diventa BST.
  • Secondi intercalari: Per convenzione internazionale, l'UTC viene mantenuto a non più di 0,9 secondi dalla realtà fisica (UT1, che si misura in ora solare) introducendo un "secondo intercalare" alla fine dell'ultimo minuto dell'anno in UTC o l'ultimo minuto di Giugno.
  • I secondi intercalari non devono essere annunciati (dagli astronomi) più di 6 mesi prima della loro introduzione. Questo è un problema se hai bisogno di qualsiasi tipo di pianificazione con la precisione di un secondo per più di 6 mesi.
  • Tempo di Unix: Misurato dal numero di secondi dall'”epoca” (inizio 1970 UTC). L'ora Unix non è influenzata dai fusi orari o dall'ora legale.
  • Secondo lo standard POSIX.1, il tempo Unix dovrebbe gestire i secondi intercalari ripetendo il secondo precedente, ad esempio: 59,00 59,25 59,50 59,75 59,00 ← ripeti 59,25 59,50 59,75 00.00 ← incrementa 00,25 Questo è un compromesso: non puoi esprimere alcun secondo intercalare nell'orologio di sistema e l'ora è garantita per tornare indietro. D'altra parte, ogni giorno è esattamente 86.400 secondi e non è necessaria una tabella di tutti i secondi intercalari passati e futuri per convertire il tempo Unix in ore-minuti-secondi leggibili dall'uomo.
  • Si suppone che ntpd riproverà dopo aver ricevuto i bit di salto dai time server upstream, ma ho anche visto che non fa nulla: il sistema va un secondo nel futuro, quindi torna lentamente all'ora corretta.

Quello che ogni programmatore dovrebbe sapere sul tempo

  • I fusi orari si riferiscono al livello di presentazione
    La maggior parte del tuo codice non dovrebbe riguardare i fusi orari o l'ora locale, dovrebbe passare il tempo di Unix così com'è.
  • Quando si misura il tempo, misurare il tempo Unix. Questo è l'UTC. È facile ottenerlo (dalle funzioni di sistema). Non ha fusi orari o ora legale (e secondi intercalari).
  • Quando memorizzi l'ora, archivia l'ora di Unix. Questo è un numero.
  • Se vuoi mantenere un tempo leggibile dall'uomo (ad esempio, nei log), prova a mantenerlo insieme con Unix time, no invece di.
  • Quando si visualizza l'ora, includere sempre l'offset del fuso orario. Il formato dell'ora senza offset è inutile.
  • L'orologio di sistema non è preciso.
  • Sei online? L'orologio di sistema di ogni altra macchina non è preciso in modo diverso.
  • L'orologio di sistema può e salterà avanti e indietro nel tempo a causa di cose che sfuggono al tuo controllo. Il tuo programma deve essere progettato per sopravvivere a questo.
  • Il rapporto tra il numero di secondi Orologio di sistema alla quantità vero secondi non è preciso e può variare. Dipende principalmente dalla temperatura.
  • Non usare ciecamente gettimeofday (). Se vuoi un orologio monotono (sempre crescente), dai un'occhiata a clock_gettime (). [Opzione Java: usa System.nanoTime () invece di System.currentTimeMillis ()]
  • ntpd può modificare l'ora di sistema in due modi:
    • Passaggio: l'orologio salta immediatamente in avanti o indietro all'ora corretta
    • Manovella: modifica la frequenza dell'orologio di sistema in modo che si muova lentamente verso l'ora corretta.
    La torsione è preferibile perché è meno dannosa, ma utile solo per correggere piccole differenze.

Casi speciali

  • Il tempo scorre al ritmo di un secondo al secondo per tutti gli osservatori. La frequenza degli orologi distanti rispetto all'osservatore dipende dalla velocità e dalla gravità. Gli orologi all'interno dei satelliti GPS sono regolati per superare gli effetti della relatività.
  • MySQL memorizza le colonne DATETIME come valori raggruppati in numeri "AAAAMMGG HHMMSS" Se sei preoccupato per l'archiviazione dei timestamp, memorizzali come un numero intero e utilizza le funzioni UNIX_TIMESTAMP () e FROM_UNIXTIME () per la conversione.

Perché non ci sono strumenti integrati nel gasolio, creiamo il seguente script: #! / bin / sh truss date 2> & 1 | grep ^ time | awk "(print $ 3;)" exit $? o nawk "BEGIN (print srand ())" o su perl: perl -e "print time," \ n ";" scopri la data di modifica del file: truss -v lstat -t lstat ls -l file.txt 2> & 1 1> / dev / null | grep "mt \ = \" | awk "(stampa $ 9;)"

Come ottenere il tempo Unix in ...

Perla tempo
PHP tempo ()
Rubino Time.now (o Time.new). All'output: Time.now.to_i
Pitone importa prima ora, poi time.time ()
Giava epoca lunga = System.currentTimeMillis () / 1000;
Microsoft .NET C# epoch = (DateTime.Now.ToUniversalTime (). Ticks - 621355968000000000) / 10000000;
VBScript / ASP DateDiff ("s", "01/01/1970 00:00:00", Now ())
Erlang calendario: datetime_to_gregorian_seconds (calendario: now_to_universal_time (now ())) - 719528 * 24 * 3600.
MySQL SELECT unix_timestamp (ora ())
PostgreSQL SELECT estratto (epoca FROM now ());
server SQL SELECT DATEDIFF (s, "1970-01-01 00:00:00", GETUTCDATE ())
JavaScript Math.round (new Date (). GetTime () / 1000.0) getTime () restituisce il tempo in millisecondi.
Unix/Linux data +% s
Altro sistema operativo Riga di comando: perl -e "print time" (se Perl è installato sul tuo sistema)

Conversione della data in ora Unix in...
PHP tempo di percorrenza ( guarda, minuti, secondi, mese, giorno, anno)
Rubino Ora.locale ( anno, mese, giorno, guarda, minuti, secondi, uso) (o Time.gm per output GMT / UTC). Per visualizzare aggiungi .to_i
Pitone prima import time, poi int (time.mktime (time.strptime ("2000-01-01 12:34:00", "% Y-% m-% d% H:% M:% S")))
Giava long epoch = new java.text.SimpleDateFormat ("gg / MM / aaaa HH: mm: ss"). parse ("01/01/1970 01:00:00");
VBScript / ASP DateDiff ("s", "01/01/1970 00:00:00", campo data)
MySQL SELECT unix_timestamp ( tempo) Formato ora: AAAA-MM-GG HH: MM: SS o AAMMGG o AAAAMMGG
PostgreSQL SELECT estratto (data FROM epoca ("2000-01-01 12:34"));
Con timestamp: SELEZIONA ESTRATTO (EPOCA DA TIMESTAMP CON FUSO ORARIO "2001-02-16 20:38:40-08"); Con un intervallo: SELEZIONA ESTRATTO (EPOCA DA INTERVALLO "5 giorni 3 ore");
server SQL SELEZIONA DATADIFF (s, "1970-01-01 00:00:00", campo data)
Unix/Linux data +% s -d "1 gennaio 1980 00:00:01"

Conversione dell'ora Unix in una data leggibile dall'uomo...
PHP Data ( Formato, tempo unix);
Rubino Ora.at ( tempo unix)
Pitone prima import time, poi time.strftime ("% a,% d% b% Y% H:% M:% S +0000", time.localtime ( tempo unix)) Sostituire time.localtime con time.gmtime per la data GMT.
Giava String date = new java.text.SimpleDateFormat ("gg / MM / aaaa HH: mm: ss"). Formato (new java.util.Date ( tempo unix*1000));
VBScript / ASP DateAdd ("s", tempo unix, "01/01/1970 00:00:00")
PostgreSQL SELEZIONA ORA CON FUSO ORARIO "epoca" + tempo unix* INTERVALLO "1 secondo";
MySQL from_unixtime ( tempo unix, facoltativo, formato di output) Formato di output standard AAAA-MM-GG HH: MM: SS
server SQL DATA ADD (s, tempo unix, "1970-01-01 00:00:00")
Microsoft Excel = (A1 / 86400) + 25569 Il risultato sarà nel fuso orario GMT. Per altri fusi orari: = ((A1 +/- differenza oraria per la zona) / 86400) + 25569.
Linux data -d @ 1190000000
Altro sistema operativo Riga di comando: perl -e "print scalar (localtime ( tempo unix)) "(Se Perl è installato) Sostituisci" localtime "con" gmtime "per il fuso orario GMT / UTC.

Che cos'è Unix time o Unix epoch (Unix epoch o Unix time o POSIX time o Unix timestamp)?

UNIX-time o POSIX-time (inglese Unix time) - un modo di codificare il tempo, accettato in UNIX e altri sistemi operativi compatibili con POSIX.
L'inizio del conto alla rovescia è considerato la mezzanotte (UTC) dal 31 dicembre 1969 al 1 gennaio 1970, il tempo da quel momento è chiamato "era UNIX" (inglese Unix Epoch).
L'ora UNIX è coerente con l'UTC, in particolare, quando i secondi intercalari sono dichiarati UTC, vengono ripetuti i corrispondenti numeri dei secondi.
Il metodo di memorizzazione del tempo sotto forma di un numero di secondi è molto comodo da utilizzare quando si confrontano le date (precise al secondo), nonché per la memorizzazione delle date: se necessario, possono essere convertite in qualsiasi formato leggibile. Anche la data e l'ora in questo formato occupano pochissimo spazio (4 o 8 byte, a seconda delle dimensioni della parola macchina), quindi è ragionevole utilizzarlo per memorizzare grandi quantità di date. Possono verificarsi svantaggi in termini di prestazioni se si accede molto spesso agli elementi della data, come il numero del mese e così via. Tuttavia, nella maggior parte dei casi, è più efficiente archiviare l'ora come un singolo valore piuttosto che come un insieme di campi.

Conversione dell'era Unix in una data leggibile dall'uomo


Data di inizio e fine Unix dell'anno, del mese o del giorno


Conversione di secondi in giorni, ore e minuti


Come ottenere il tempo Unix in ...

Perlatempo
PHPtempo ()
RubinoTime.now (o Time.new). All'output: Time.now.to_i
Pitoneimporta prima ora, poi time.time ()
Giavaepoca lunga = System.currentTimeMillis () / 1000;
Microsoft .NET C#epoch = (DateTime.Now.ToUniversalTime (). Ticks - 621355968000000000) / 10000000;
VBScript / ASPDateDiff ("s", "01/01/1970 00:00:00", Now ())
Erlangcalendario: datetime_to_gregorian_seconds (calendario: now_to_universal_time (now ())) - 719528 * 24 * 3600.
MySQLSELECT unix_timestamp (ora ())
PostgreSQLSELECT estratto (epoca FROM now ());
server SQLSELECT DATEDIFF (s, "1970-01-01 00:00:00", GETUTCDATE ())
JavaScriptMath.round (new Date (). GetTime () / 1000.0) getTime () restituisce il tempo in millisecondi.
Unix/Linuxdata +% s
Altro sistema operativoRiga di comando: perl -e "print time" (se Perl è installato sul tuo sistema)

Conversione della data in ora Unix in...

PHPtempo di percorrenza ( guarda, minuti, secondi, mese, giorno, anno)
RubinoOra.locale ( anno, mese, giorno, guarda, minuti, secondi, uso) (o Time.gm per output GMT / UTC). Per visualizzare aggiungi .to_i
Pitoneprima import time, poi int (time.mktime (time.strptime ("2000-01-01 12:34:00", "% Y-% m-% d% H:% M:% S")))
Giavalong epoch = new java.text.SimpleDateFormat ("gg / MM / aaaa HH: mm: ss"). parse ("01/01/1970 01:00:00");
VBScript / ASPDateDiff ("s", "01/01/1970 00:00:00", campo data)
MySQLSELECT unix_timestamp ( tempo) Formato ora: AAAA-MM-GG HH: MM: SS o AAMMGG o AAAAMMGG
PostgreSQLSELECT estratto (data FROM epoca ("2000-01-01 12:34"));
Con timestamp: SELEZIONA ESTRATTO (EPOCA DA TIMESTAMP CON FUSO ORARIO "2001-02-16 20:38:40-08"); Con un intervallo: SELEZIONA ESTRATTO (EPOCA DA INTERVALLO "5 giorni 3 ore");
server SQLSELEZIONA DATADIFF (s, "1970-01-01 00:00:00", campo data)
Unix/Linuxdata +% s -d "1 gennaio 1980 00:00:01"

Conversione dell'ora Unix in una data leggibile dall'uomo...

PHPData ( Formato, tempo unix);
RubinoOra.at ( tempo unix)
Pitoneprima import time, poi time.strftime ("% a,% d% b% Y% H:% M:% S +0000", time.localtime ( tempo unix)) Sostituire time.localtime con time.gmtime per la data GMT.
GiavaString date = new java.text.SimpleDateFormat ("gg / MM / aaaa HH: mm: ss"). Formato (new java.util.Date ( tempo unix*1000));
VBScript / ASPDateAdd ("s", tempo unix, "01/01/1970 00:00:00")
PostgreSQLSELEZIONA ORA CON FUSO ORARIO "epoca" + tempo unix* INTERVALLO "1 secondo";
MySQLfrom_unixtime ( tempo unix, facoltativo, formato di output) Formato di output standard AAAA-MM-GG HH: MM: SS
server SQLDATA ADD (s, tempo unix, "1970-01-01 00:00:00")
Microsoft Excel= (A1 / 86400) + 25569 Il risultato sarà nel fuso orario GMT. Per altri fusi orari: = ((A1 +/- differenza oraria per la zona) / 86400) + 25569.
Linuxdata -d @ 1190000000
Altro sistema operativoRiga di comando: perl -e "print scalar (localtime ( tempo unix)) "(Se Perl è installato) Sostituisci" localtime "con" gmtime "per il fuso orario GMT / UTC.

A cosa serve lo strumento "Unixtime Converter"?

Questo strumento, prima di tutto, sarà utile per i webmaster che si occupano costantemente di grandi quantità di date o fanno spesso riferimento ai loro elementi nel loro lavoro. Utilizzando lo strumento "Unixtime Converter", puoi facilmente convertire l'ora Unix in una data intuitiva (e viceversa), scoprire l'ora dell'epoca Unix corrente e ottenere l'ora Unix in lingue differenti programmazione, DBMS e sistemi operativi.

Cos'è Unix Time?

L'era Unix (epoca Unix) iniziò nella notte tra il 31 dicembre 1969 e il 1 gennaio 1970. Questa data è stata presa come punto di partenza per il tempo "computer", che viene calcolato in secondi e occupa pochissimo spazio su disco - solo 4 o 8 byte. Con questo metodo di codifica, i programmatori possono "nascondere" qualsiasi data in un numero e riconvertirla facilmente in un formato comprensibile per gli utenti.

Unix time (chiamato anche Unix time o POSIX time) è comodo da usare in vari sistemi operativi e linguaggi di programmazione, poiché viene visualizzato come un singolo valore e non come un certo numero di campi che occupano spazio. Inoltre, il tempo UNIX è pienamente conforme allo standard UTC (anche negli anni bisestili) - in questo caso, i secondi corrispondenti vengono semplicemente ripetuti.

Terminologia Unix

Qualche parola sui termini.

Così, Tempo di Unix(o tempo POSIX) è il numero di secondi trascorsi dalla mezzanotte, 1 gennaio 1970, ad oggi.

Unix Timestamp(timestamp) è un tempo "fisso", in altre parole, una data specifica stampata in un numero.

UTC(Universal Coordinated Time) è il Coordinated Universal Time, che è "fissato" al primo meridiano, e da cui vengono contati i fusi orari geografici.

Quanto è "resistente" il sistema?

In appena un paio di decenni, precisamente il 19 gennaio 2038 alle 03:14:08 UTC, l'ora Unix raggiungerà il valore 2147483648 e i sistemi informatici possono interpretare questo numero come negativo. La chiave per risolvere questo problema sta nell'usare una variabile a 64 bit (anziché a 32 bit) per memorizzare l'ora. In questo caso, lo stock di valori numerici del tempo Unix sarà sufficiente per l'umanità per altri 292 miliardi di anni. Non male, vero?

Il tempo di Unix è uno per tutti

Se vivi a Londra o San Francisco e i tuoi amici sono a Mosca, puoi "sincronizzare gli orologi" usando l'ora Unix: questo sistema è in questo momento il tempo è uno per il mondo intero. Naturalmente, se l'ora sui server è impostata correttamente. E con lo strumento "Convertitore Unixtime" questa conversione richiederà una frazione di secondo.

Questo strumento è necessario per convertire una data dal formato Unix TimeStamp in una data leggibile e viceversa.

Che cos'è Unix time e a cosa serve? Per capire a cosa serve, inizierò con concetto generale che cos'è esattamente il tempo di Unix.

Tempo di Unix (o TimeStamp, che tradotto in russo significa "time stamp" e ha lo stesso significato)è il numero di secondi dal 1 gennaio 1970. Cioè, Unix TimeStamp al 01/01/1970 00:00:00 era uguale a 0. Dopo 2 minuti (120 secondi) il tempo Unix era già 120. Ad esempio, giorni dopo (01/02/1970 00:00 :00) Il tempo Unix era uguale a 86400, poiché sono trascorsi 60 * 60 * 24 = 86400 secondi. Ora l'Unix Time Stamp è già 1566148027 e il numero è in costante crescita, poiché i secondi passano costantemente.

Ma perché usarlo? Il punto è che Unix TimeStamp è comodo da usare per memorizzare e manipolare le date durante la programmazione. Non entrerò nei dettagli, ma in breve, un numero è molto più comodo da leggere e confrontare rispetto a una stringa con caratteri "sinistri". Questo è il motivo per cui la maggior parte degli sviluppatori usa Unix TimeStamp per lavorare con la data nei loro progetti, e nel database spesso vediamo un numero molto grande nel campo `date`, che non sembra affatto una data.

È qui che questo strumento torna utile. Con il suo aiuto, puoi facilmente tradurre questo "grande numero dal database" in una data leggibile dall'uomo. Inoltre, puoi anche fare il contrario e trasformare qualsiasi data in un Unix TimeStamp. Queste sono le possibilità di cui è dotato questo convertitore.

Il problema dell'anno 2038

Come ho detto, il numero Unix TimeStamp ogni secondo diventa più di 1. Prima o poi, il limite di questo numero deve arrivare e sarà proprio nel 2038. Il fatto è che il numero massimo nei sistemi operativi a 32 bit diffusi all'inizio del 21° secolo è 2 31. Questo è il numero che Unix TimeStamp raggiungerà nel 2038.

→ È già stata trovata una soluzione a questo problema. Per fare in modo che nel 2038 i siti non smettano di contare correttamente il tempo, è sufficiente utilizzare 64 bit sistema operativo su un hosting / VDS / server dedicato, non a 32 bit. Con la crescita attiva delle capacità dei computer e una diminuzione dei loro costi, tutto va al fatto che entro il 2038 la stragrande maggioranza dei servizi nel campo della fornitura di spazio per il sito sarà fornita sulla base del sistema operativo a 64 bit. A proposito, in un sistema a 64 bit, un tale problema non ci riguarderà per almeno 292 miliardi di anni, il che è abbastanza per calcolare il problema del 2038 risolto.

Solo per i lettori di Lifeexample è possibile aprire un negozio online su Moguta.CMS con uno sconto del 15%

Unix Time e Unix Timestamp (MySQL, PHP, JavaScript)

Ciao cari lettori del blog, in questo articolo voglio parlarvi di cos'è Tempo di Unix e Unix Timestamp... I programmatori spesso combinano questi concetti in uno, ma questo non è del tutto vero. Inoltre, l'articolo contiene molte note utili sul tema del lavoro con Unix Timestamp in PHP, MySQL e JavaScript.

Perché Unix Time inizia il 1 gennaio 1970?

Il fatto è che il tempo di Unix inizia a contare l'era di Unix, con il rilascio del primo Sistemi UNIX... Il primo sistema di questo tipo è stato creato nel 1969, quindi gli sviluppatori hanno preso la data dal 1 gennaio 1970 a mezzanotte UTC ( UTC).

Comprendiamo a cosa servono Unix time e Unix Timestamp e diamo loro concetti chiari.

Unix TimestampÈ un timestamp che è una sequenza di caratteri che rappresenta il numero di secondi trascorsi dal 1 gennaio 1970.

Cercherò di fare un esempio per chiarire la differenza tra questi due concetti.

Nel momento in cui scrivo questo da me, Tempo di Unix era uguale 1346765877 .

Al momento della lettura, da parte tua, di queste informazioni, una registrazione del tempo ( 1346765877 ) è già un'etichetta - Unix Timestamp! Convertendo questo timestamp in una forma leggibile, otteniamo la data 04-09-2012 e l'ora 17:37:57.

Francamente parlando, non ha senso separare i due concetti, secondo me, ma è comunque utile avere un'idea di ciò che costituisce Tempo Unix ed è anche utile capire che il numero di secondi massimi possibili dal 1970 ha un limite!

La fine dell'era Unix arriverà nel 2038

Fatto: massimo numero binario su sistemi a 32 bit è il numero 01111111 11111111 11111111 11111111 convertendolo nel sistema decimale, otteniamo il numero 2147483647.

19 gennaio 2038 alle 03:14:08 verrà il momento in cui il numero di secondi trascorsi dall'inizio dell'era Unix supererà il massimo disponibile in un sistema a 32 bit, numero = 2147483647. Se il bit va in overflow, la data sarà Ripristina.

È molto semplice testare questa teoria con un esempio illustrativo:

  • Apri la calcolatrice standard di Windows, premi ALT + 3, questo lo convertirà nella vista di ingegneria;
  • Imposta la modalità a 4 byte e il tipo di input decimale;
  • Scrivi il numero 2147483647;

  • Notare la rappresentazione binaria del numero;
  • Aggiungi uno al numero;

  • L'addizione risulterà in un numero negativo!

Se continuiamo ad aggiungerne uno, otteniamo una chiusura ciclica.

Questo tipo di squillo della data si verificherà dal 19 gennaio 2038 su tutti i sistemi che utilizzano l'architettura a 32 bit.

In effetti, non c'è bisogno di essere tristi, perché gli sviluppatori di sistemi informatici stanno introducendo sempre più architetture a 64 bit nell'uso diffuso. Crediamo che arriveranno in tempo entro il 2038.

Ora parliamo dell'uso del timestamp unix in php, mysql e anche in javascript.

Lavorare con unix timestamp

Un punto molto importante quando si lavora con timestamp unix in php o mysql è la necessità di comprendere chiaramente i pro ei contro di questo formato di data.

Per esempio, TIMESTAMP non può essere utilizzato per specificare eventi storici o eventi di un lontano futuro. L'intera serie di date è limitata al periodo dal 1970 all'inizio del 2038. Se imposti una data oltre il 2038, non verrà interpretata correttamente dal sistema a 32 bit.

Rendendosi conto di questa limitazione, sorge una domanda logica: " Perché preoccuparsi di rappresentare la data in secondi?"

Quando usare Unix Timestamp

Per rappresentare il tempo nel nostro solito sistema di misurazione, sono necessari 8 byte e per il timestamp unix è la metà - 4 byte.

Risparmiare la quantità di dati, secondo me, è il vantaggio principale e indiscutibile nell'uso di Unix Time.

Inoltre, ci sono una serie di utili sfumature disponibili quando si lavora con Timestamp UNIX in mysql... E poiché tutte le informazioni devono essere archiviate sul server del database, e questo, a sua volta, presenta numerosi vantaggi quando si lavora con i timestamp Unix, la scelta verso il timestamp unix può essere correttamente giustificata dalle seguenti disposizioni.

MySQL fornisce un tipo di dati Timestamp appropriato per lavorare con il formato unix-time, impostando la quale otteniamo immediatamente un utile vantaggio rispetto ai formati standard DATA e APPUNTAMENTO... Il vantaggio è che eseguendo l'operazione di aggiunta Nuovo arrivato in una tabella, la colonna con questo tipo di dati viene compilata automaticamente. Ciò significa che possiamo risparmiare non solo sulla quantità di dati, ma anche sul tempo di elaborazione del server web.

Per rafforzare la parola con i fatti, impostiamo la seguente attività: quando si registra un nuovo utente nel sistema, è necessario inserire la data della sua aggiunta al database.

Se il tipo di campo che memorizza la data nella tabella è APPUNTAMENTO, poi una richiesta da Script PHP sarà simile a questo:

I vantaggi sono evidenti!

C'è anche un aspetto negativo: se sono presenti più campi TIMESTAMP, solo il primo viene aggiornato automaticamente.

Ha senso usare INT invece di timestamp?

Molti programmatori, quando lavorano con unix timestamp, usano il formato intero int (11). Questo è un approccio completamente irragionevole alla domanda, dal momento che MySQL fornisce molte funzioni utili per il tipo di timestamp che influenzano la velocità di lavoro con esso. Pertanto, memorizzando il timestamp in INT, ci priviamo di tutto il supporto del server per questo formato. Questo è più o meno lo stesso della memorizzazione dell'id nel tipo varchar (11).

Tuttavia, c'è una scusa per mantenere unix timestamp su INT... Quando si trasferisce un database tra diversi DBMS, può sorgere un conflitto di tipo, ad es. per uno dei DBMS, il tipo di timestamp potrebbe non essere familiare. In questo caso, l'uso di int avrà la precedenza poiché questo formatoè in tutti i DBMS.

Brevi caratteristiche dei tipi di calendario MySQL

TIMESTAMP- tipo di dati per la memorizzazione di data e ora. I dati vengono memorizzati come numero di secondi dall'inizio dell'"era Unix". L'intervallo di valori è 1970-01-01 00:00:00 - 2038-12-31 00:00:00. Ci vogliono 4 byte.

DATA- il tipo di dati per la memorizzazione della data. L'intervallo di valori va da 1000-01-01 a 9999-12-31. Ci vogliono 3 byte.

APPUNTAMENTO- tipo di dati per la memorizzazione di data e ora. L'intervallo di valori è 1000-01-01 00:00:00 - 9999-12-31 00:00:00. Richiede 8 byte ed è memorizzato come numero YYYYMMDDHHMMSS./p>

ANNO- tipo di dati per la memorizzazione dell'anno. Intervallo di valori: 1901 - 2155. Occupa 1 byte.

TEMPO- tipo di dati per la memorizzazione dell'ora. L'intervallo è -828: 59: 59 - 828: 59: 59. Ci vogliono 3 byte.

Traduzione della data in unix

È tempo di definire alcune funzioni utili per tradurre la data in timestamp unix e ritorno da unix-time in data leggibile.

Come ottenere l'ora UNIX corrente?

  • PHP:

    tempo ();

  • JavaScript:

    Math.round (new Date () .getTime () / 1000.0);

  • MySQL:

    SELECT unix_timestamp (ora ());