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

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')

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.


10

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


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

1
Esta respuesta es para MSSQL (aunque esta pregunta tiene cierta confusión).
Salman A
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.