MySQL convierte la cadena de fecha a la marca de tiempo de Unix

137

¿Cómo convierto el siguiente formato a la marca de tiempo de Unix?

Apr 15 2012 12:00AM

El formato que obtengo de DB parece tener AMal final. Intenté usar lo siguiente pero no funcionó:

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
fuente
1
¿La fecha se almacena como texto en la base de datos?
Strnk
1
¿Es realmente una pregunta de MySQL? Su sintaxis no lo sugiere.
Álvaro González
1
Parece cuál es la pregunta sobre MSSQL.
Fedir RYKHTIK

Respuestas:

224

Prueba 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')
Maestro de consultas
fuente
1
Gracias. Esto funciona. Esto también se puede usar en otras declaraciones, como actualizar, eliminar, insertar, etc.
MR_AMDEV
1
Después de tantas pruebas de su solución funcionó para mí: 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 es la fecha que tenía 31 Oct 2017 4:16:49 pmlo que necesitaba usar %d %M %Y %h:%i:%s %pparaSTR_TO_DATE
Damodar Bashyal
35

Seguramente tendrá que usar ambos STR_TO_DATEpara convertir su fecha a un formato de fecha estándar de MySQL y UNIX_TIMESTAMPobtener la marca de tiempo de la misma.

Dado el formato de su fecha, algo así como

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

Will te da una marca de tiempo válida. Consulte la STR_TO_DATEdocumentación para obtener más información sobre la cadena de formato.

Strnk
fuente
10

Para la fecha actual solo use UNIX_TIMESTAMP()en su consulta MySQL.

stackMonk
fuente
1
No responde la pregunta de la publicación original.
Evan Donovan
es para las personas que necesitan para convertir sólo la fecha actual en su consulta, responde a una parte de la pregunta, no es necesario para su gatekeeping Evan, la gente ha upvoted la misma para mostrar que necesitan este
stackMonk
La pregunta original pedía convertir un formato específico; Esto no responde a esa pregunta. Cancelaré el voto negativo si editas para aclarar eso.
Evan Donovan
Se ha aclarado en la primera línea que esto es para la fecha actual.
stackMonk
Edité para aclarar la relación de esta respuesta con la pregunta original y dar un ejemplo.
Evan Donovan
-5

Desde 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
fuente
1
Esta respuesta es para MSSQL (aunque esta pregunta tiene cierta confusión).
Salman A