Como converter timestamp para datetime no MySQL?

133

Como converter 1300464000para 2011-03-18 16:00:00MySQL?

compilar-fã
fonte
2
Pesquise por perguntas / respostas existentes antes de postar uma nova pergunta - este tópico já foi abordado com alguns detalhes.
John Parker
2
Você já deu uma olhada na documentação? Está tudo lá: dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Felix Kling

Respostas:

200

Use a FROM_UNIXTIME()função no MySQL

Lembre-se de que, se você estiver usando uma estrutura que a armazena em milissegundos (por exemplo, carimbo de data / hora de Java), será necessário dividir por 1000 para obter o tempo Unix correto em segundos.

Richard Tuin
fonte
1
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )não funciona porque? usando v5.6
Janus Troelsen
3
@JanusTroelsen SELECT from_unixtime( unix_timestamp(TIMESTAMP( "2011-12-01", "22:01:23.048" ) ) )funciona. TIMESTAMP()não retorna um valor inteiro.
cnvzmxcvmcx
4
Só porque eu fiz isso e fiquei confuso com a saída: o MySQL armazena o tempo do Unix em segundos, enquanto muitas outras estruturas o armazenam em milissegundos (ou seja, o carimbo de data / hora de Java). Portanto, lembre-se de dividir por 1000 se você estiver usando esta função em dados provenientes de algum lugar que use millis no tempo do Unix.
26415 Chris Thompson
64
DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%Y-%m-%d %H:%i:%s') as "Date" FROM `orders`

Esta é a solução definitiva se a data especificada estiver em formato codificado como 1300464000

Kingshuk Deb
fonte
3
Obrigado por isso. Para incluir o horário: DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%d-%m-%Y %H:%i:%s') as "Date" FROM `orders`
JNP Web Developer
Tenho certeza de que DATE_FORMAT (FROM_UNIXTIME ( orderdate), '% Y-% m-% d') como "Data" FROM ordersseria a solução definitiva: D
Kyle
14

Para responder ao comentário de Janus Troelsen

Use UNIX_TIMESTAMP em vez de TIMESTAMP

SELECT from_unixtime( UNIX_TIMESTAMP(  "2011-12-01 22:01:23.048" ) )

A função TIMESTAMP retorna uma Data ou um DateTime e não um registro de data e hora, enquanto UNIX_TIMESTAMP retorna um registro de data e hora unix

ksvendsen
fonte
parece claro comparar um tempo unix de um tempo unix. Eu uso SELECT (CAST (DATE_FORMAT (from_unixtime (UNIX_TIMESTAMP (CURRENT_TIMESTAMP))), '% Y-% m-% d') como DATE) <CAST ('2019-05-02' AS DATE)); para comparar datas, substituo 2019-05 * 02 um objeto de data e hora formatado em php. Thnaks.
Mantisse 12/04/19
1
Por favor, não responda desta maneira a uma pergunta diferente da original.
Paweł Stankowski
Isso não responde à pergunta original de forma alguma
Nico Haase
7

Você pode usar

select from_unixtime(1300464000,"%Y-%m-%d %h %i %s") from table;

Para uma descrição detalhada sobre

  1. from_unixtime ()
  2. unix_timestamp ()
Dilraj Singh
fonte
Eu usaria esse formato para o tempo militar "% Y-% m-% d% H% i% s"
tanner burton
3

SELECT from_unixtime( UNIX_TIMESTAMP(fild_with_timestamp) ) from "your_table"
Esse trabalho pra mim

Leo
fonte