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.