Converti il ​​timestamp di Unix in una data leggibile dall'uomo usando MySQL


Risposte:



108

Ciò che manca alle altre risposte (al momento della stesura di questo documento) e non direttamente ovvio è quello from_unixtime può prendere un secondo parametro per specificare il formato in questo modo:

SELECT
  from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM 
  your_table

20
Problema molto minore, ma% h sono le ore nel formato 12 ore, che quindi richiede% p per completezza (AM / PM). O% H offre ore nel formato 24 ore.
entro


19

Hai bisogno di un timestamp unix in un fuso orario specifico?

Ecco una riga se hai un rapido accesso al mysql cli:

mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time';

+---------------------+
| local time          |
+---------------------+
| 2016-06-27 23:37:31 |
+---------------------+

Sostituisci 'MST'con il fuso orario desiderato. Vivo in Arizona 🌵 quindi la conversione da UTC a MST.


7

Perché preoccuparsi di salvare il campo come leggibile? Solo noiAS

SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
               FROM theTable
               WHERE theTable.theField = theValue;

EDIT: Siamo spiacenti, archiviamo tutto in millisecondi, non in secondi. Aggiustato.


4

È possibile utilizzare la funzione DATE_FORMAT. Ecco una pagina con esempi e schemi che puoi usare per selezionare diversi componenti della data.


1

Modo semplice e semplice:

select from_unixtime(column_name, '%Y-%m-%d') from table_name


1

Dal momento che ho scoperto che questa domanda non era a conoscenza, che mysql memorizza sempre l'ora nei campi timestamp in UTC ma visualizzerà (ad esempio phpmyadmin) nel fuso orario locale, vorrei aggiungere i miei risultati.

Ho un campo last_modified aggiornato automaticamente, definito come:

`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Guardandolo con phpmyadmin, sembra che sia l'ora locale, internamente è UTC

SET time_zone = '+04:00'; // or '+00:00' to display dates in UTC or 'UTC' if time zones are installed.
SELECT last_modified, UNIX_TIMESTAMP(last_modified), from_unixtime(UNIX_TIMESTAMP(last_modified), '%Y-%c-%d %H:%i:%s'), CONVERT_TZ(last_modified,@@session.time_zone,'+00:00') as UTC FROM `table_name`

In qualsiasi costellazione, UNIX_TIMESTAMP e 'as UTC' sono sempre visualizzati nell'ora UTC.

Eseguilo due volte, prima senza impostare il fuso orario.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.