Como converter timestamp para datetime no MySQL?


133

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


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.


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


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


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


3

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.