MySQL converte la stringa della data in timestamp Unix


137

Come faccio a convertire il seguente formato in unix timestamp?

Apr 15 2012 12:00AM

Il formato che ottengo da DB sembra avere AMalla fine. Ho provato a utilizzare quanto segue ma non ha funzionato:

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
La data è memorizzata come testo nel DB?
Strnk,

1
È davvero una domanda MySQL? La tua sintassi non lo suggerisce.
Álvaro González,

1
Sembra quale sia la domanda su MSSQL.
Fedir RYKHTIK

Risposte:


224

Prova questa query per CONVERT DATETIME to UNIX TIME STAMP

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

Questa domanda per 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
Grazie. Questo funziona. Questo può essere utilizzato anche in altre istruzioni come aggiornamento, eliminazione, inserimento, ecc.
MR_AMDEV

1
Dopo così tante prove la tua soluzione ha funzionato per me: 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 ASCquesta è la data che ho avuto 31 Oct 2017 4:16:49 pmquindi dovevo usare %d %M %Y %h:%i:%s %pperSTR_TO_DATE
Damodar Bashyal

35

Dovrai certamente utilizzare sia STR_TO_DATEper convertire la tua data in un formato di data standard MySQL, sia UNIX_TIMESTAMPper ottenere il timestamp da esso.

Dato il formato della tua data, qualcosa del genere

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

Will ti dà un timestamp valido. Guarda la STR_TO_DATEdocumentazione per avere maggiori informazioni sulla stringa di formato.


10

Per la data corrente basta usare UNIX_TIMESTAMP()nella tua query MySQL.


1
Non risponde alla domanda dal post originale.
Evan Donovan,

è per le persone che hanno bisogno di convertire solo la data corrente nella loro query, risponde a una parte della domanda, non è necessario il tuo gatekeeping Evan, le persone hanno votato lo stesso per mostrare che ne hanno bisogno
stackMonk

La domanda originale ha chiesto di convertire un formato specifico; questo non risponde a questa domanda. Annullerò il voto negativo se lo modifichi per chiarirlo.
Evan Donovan,

è stato chiarito nella prima riga che questo è per la data corrente.
StackMonk,

Ho modificato per chiarire la relazione di questa risposta con la domanda originale e fare un esempio.
Evan Donovan,

-5

Da 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
Questa risposta è per MSSQL (sebbene questa domanda abbia un po 'di confusione).
Salman,
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.