MySQL converter data string para carimbo de data / hora Unix


137

Como faço para converter o seguinte formato em timestamp unix?

Apr 15 2012 12:00AM

O formato que recebo do DB parece ter AMno final. Eu tentei usar o seguinte, mas não funcionou:

CONVERT(DATETIME, Sales.SalesDate, 103) AS DTSALESDATE,  
CONVERT(TIMESTAMP, Sales.SalesDate, 103) AS TSSALESDATE

where Sales.SalesDate value is Apr 15 2012 12:00AM

1
A data é armazenada como texto no banco de dados?
strnk

1
É realmente uma pergunta do MySQL? Sua sintaxe não sugere isso.
Álvaro González

1
Parece qual é a pergunta sobre o MSSQL.
Fedir RYKHTIK

Respostas:


224

Experimente esta consulta para CONVERT DATETIME to UNIX TIME STAMP

SELECT UNIX_TIMESTAMP(STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p'))

Esta consulta para CHANGE DATE FORMATE

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p')),'%m-%d-%Y %h:%i:%p')

1
Graças .Este works.This também pode ser usado em outras declarações, como update, delete, insert etc
MR_AMDEV

1
Depois de tantos ensaios sua solução trabalharam para mim: select * from (SELECT order_increment_id, FROM_UNIXTIME(UNIX_TIMESTAMP(STR_TO_DATE(order_date, '%d %M %Y %h:%i:%s %p')),'%Y-%m-%d') as order_date, email_sent FROM `packingslip_header` where email_sent=0) t where order_date >= '2019-11-13' ORDER BY order_increment_id ASCEsta é a data que eu tinha 31 Oct 2017 4:16:49 pmentão eu precisava usar %d %M %Y %h:%i:%s %pparaSTR_TO_DATE
Damodar Bashyal

35

Você certamente precisará usar ambos STR_TO_DATEpara converter sua data em um formato de data padrão do MySQL e UNIX_TIMESTAMPobter o carimbo de data e hora.

Dado o formato da sua data, algo como

UNIX_TIMESTAMP(STR_TO_DATE(Sales.SalesDate, '%M %e %Y %h:%i%p'))

Will fornece um carimbo de data / hora válido. Consulte a STR_TO_DATEdocumentação para obter mais informações sobre a string de formato.


10

Para a data atual, basta usar UNIX_TIMESTAMP()na sua consulta MySQL.


1
Não responde a pergunta da postagem original.
Evan Donovan

é para as pessoas que precisavam converter apenas a data atual em sua consulta, responde a uma parte da questão, não há necessidade para o seu gatekeeping Evan, as pessoas têm upvoted o mesmo para mostrar que eles precisam desta
stackMonk

A pergunta original pediu para converter um formato específico; isso não está respondendo a essa pergunta. Cancelarei o voto negativo se você editar para esclarecer isso.
Evan Donovan

foi esclarecido na primeira linha que isso é para a data atual.
stackMonk

Editei para esclarecer a relação dessa resposta com a pergunta original e dar um exemplo.
Evan Donovan

-5

Em http://www.epochconverter.com/

SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())

My bad, SELECT unix_timestamp(time) Time format: YYYY-MM-DD HH:MM:SS or YYMMDD or YYYYMMDD. More on using timestamps with MySQL:

http://www.epochconverter.com/programming/mysql-from-unixtime.php

1
Esta resposta é para MSSQL (embora esta pergunta tenha alguma confusão).
Salman Um
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.