2016-02-01 4 views
1

Привет, я пишу запросы для MySQL, и теперь у моей базы данных есть столбец, содержащий временную метку в этом формате: 7/14/2015 7:57:49 AM, но мне нужно использовать функция DATEDIFF, поэтому как преобразовать временную метку в формат, например: 2015-7-14 (или 2015-07-14, я не уверен, какой из них правильный, а только дата)?Формат timestamp MySQL и датированный

ответ

1

Это должно преобразовать строку только дату в формате даты, то вы можете использовать DATEDIFF на поле даты в вопросе:

SELECT STR_TO_DATE(LEFT(t,LOCATE(' ',t) - 1), '%m/%d/%Y') FROM my_table; 

LEFT функция будет принимать подстроку слева от пространства , который является только вашей датой, то STR_TO_DATE преобразует эту подстроку в дату, которую система может использовать.

(Не зная ваши имена полей и таблиц, я использовал t и my_table.)

+0

Спасибо, это то, что я ищу! – richards

+0

@Richards Отлично! Я тоже немного научился на этом пути! – pjd

0

Вам не нужно. Способ отображения MySQL временные метки не имеют ничего общего с тем, как они хранятся внутри; до тех пор, пока это TYPE TIMESTAMP или какой-либо совместимый тип, функция DATEDIFF() будет знать, что с ней делать.

TIMESTAMPs фактически хранятся как действительно огромное целое число, представляющее (я думаю) миллисекунды от Midnight UTC, 1 января 1970 года. Формат отображения определяется глобальной переменной системы и не имеет ничего общего с фактическим значением.

Преобразование из строки в DATETIME или TIMESTAMP на самом деле также довольно просто с использованием функции STR_TO_DATE(); в вашем случае format string будет что-то вроде

STR_TO_DATE('%c/%e/%Y %l:%i:%s %p', datecol) 

хотя вы, возможно, придется немного поэкспериментировать, чтобы заставить его работать надежно.

+0

В настоящее время тип столбца текста, и я пытался импортировать данные, заявив, что столбец в качестве типа DATETIME, но это не признается , Я не нашел тип TIMESTAMP в мастере импорта данных. Я использую Workbench MySQL. – richards

+0

Хорошо, это имеет значение. Через пару минут у меня будет ответ. –