MySQL преобразует строку даты в метку времени Unix

Как преобразовать следующий формат в временную метку unix?

Apr 15 2012 12:00AM

Формат, который я получаю из БД, кажется, имеет AM в конце. Я пробовал использовать следующее, но это не сработало:

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

Попробуйте этот запрос для CONVERT DATETIME to UNIX TIME STAMP

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

Этот запрос для 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')

Ответ 2

Вам, безусловно, придется использовать STR_TO_DATE, чтобы преобразовать дату в формат стандартной даты MySQL и UNIX_TIMESTAMP, чтобы получить от него временную метку.

Учитывая формат вашей даты, что-то вроде

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

Будет выдана действительная временная метка. Посмотрите документацию STR_TO_DATE, чтобы получить дополнительную информацию о строках формата.

Ответ 3

Для текущей даты просто используйте UNIX_TIMESTAMP() в вашем запросе MySQL.

Ответ 4

Из 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