Привет, я пишу запросы для MySQL, и теперь у моей базы данных есть столбец, содержащий временную метку в этом формате: 7/14/2015 7:57:49 AM, но мне нужно использовать функция DATEDIFF, поэтому как преобразовать временную метку в формат, например: 2015-7-14 (или 2015-07-14, я не уверен, какой из них правильный, а только дата)?Формат timestamp MySQL и датированный
ответ
Это должно преобразовать строку только дату в формате даты, то вы можете использовать DATEDIFF
на поле даты в вопросе:
SELECT STR_TO_DATE(LEFT(t,LOCATE(' ',t) - 1), '%m/%d/%Y') FROM my_table;
LEFT
функция будет принимать подстроку слева от пространства , который является только вашей датой, то STR_TO_DATE
преобразует эту подстроку в дату, которую система может использовать.
(Не зная ваши имена полей и таблиц, я использовал t
и my_table
.)
Вам не нужно. Способ отображения 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)
хотя вы, возможно, придется немного поэкспериментировать, чтобы заставить его работать надежно.
В настоящее время тип столбца текста, и я пытался импортировать данные, заявив, что столбец в качестве типа DATETIME, но это не признается , Я не нашел тип TIMESTAMP в мастере импорта данных. Я использую Workbench MySQL. – richards
Хорошо, это имеет значение. Через пару минут у меня будет ответ. –
Спасибо, это то, что я ищу! – richards
@Richards Отлично! Я тоже немного научился на этом пути! – pjd