Строка с меткой времени в MySQL - PullRequest
28 голосов
/ 21 декабря 2011

Есть ли способ преобразовать строку в метку времени UNIX в MySQL?

Например, у меня есть строка 2011-12-21 02:20pm, которая должна быть в формате отметки времени unix.

Ответы [ 2 ]

48 голосов
/ 21 декабря 2011

UNIX_TIMESTAMP() добивается цели:

SELECT UNIX_TIMESTAMP('2011-12-21 14:20:00');

Однако функция UNIX_TIMESTAMP() принимает только стандартную дату в формате MySQL.Если вы хотите использовать нотацию AM / PM, сначала вам нужно будет использовать STR_TO_DATE, например:

SELECT UNIX_TIMESTAMP(
    STR_TO_DATE('2011-12-21 02:20pm', '%Y-%m-%d %h:%i%p')
);
23 голосов
/ 28 мая 2014

Хотя @ a'r уже дал правильный ответ, я хотел бы добавить еще кое-что: два параметра STR_TO_DATE () , формат 'строка даты' и строка 'формат даты' , должно иметь одинаковое расположение '-' и ':'.

Например, следующие 4 запроса возвращают точно такой же результат 2014-05-28 11: 30: 10

SELECT STR_TO_DATE('2014-05-28 11:30:10','%Y-%m-%d %H:%i:%s');

SELECT STR_TO_DATE('20140528 11:30:10','%Y%m%d %H:%i:%s');

SELECT STR_TO_DATE('2014-05-28 113010','%Y-%m-%d %H%i%s') ;

SELECT STR_TO_DATE('20140528 113010','%Y%m%d %H%i%s');

Примечание: 2 параметра STR_TO_DATE () в каждом запросе имеют соответствующие позиции для '-' и ':'

...