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
redcoder
fonte
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')
Mestre de Consulta
fonte
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.

strnk
fonte
10

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

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