Как преобразовать строку в дату в MySQL?


149

У меня есть stringстолбец, который действует как, dateи я хочу выбрать его как date.

Является ли это возможным?

Мой пример данных формата будет; month/day/year->12/31/2011

Ответы:


258

Как сказали в MySQL, используя строковый столбец с текстом даты в качестве поля даты , вы можете сделать

SELECT  STR_TO_DATE(yourdatefield, '%m/%d/%Y')
FROM    yourtable

Вы также можете обрабатывать эти строки даты в WHEREпредложениях. Например

SELECT whatever
  FROM yourtable
 WHERE STR_TO_DATE(yourdatefield, '%m/%d/%Y') > CURDATE() - INTERVAL 7 DAY

Вы можете обрабатывать все виды макетов даты / времени таким образом. Пожалуйста, обратитесь к спецификаторам формата для DATE_FORMAT()функции, чтобы увидеть, что вы можете поместить во второй параметр STR_TO_DATE().


6
Я думаю, что это должен быть ИНТЕРВАЛ 7 ДНЕЙ вместо ДНЕЙ
Ферас Одех

1
У меня есть столбец типа char типа "dd-mmm-yyyy". Как запросить в формате "дд-мм-гггг"?
MAX

51
STR_TO_DATE('12/31/2011', '%m/%d/%Y')

Какая дата хранится в формате ДД / ММ / ГГГГ, например 31/11/1015?
Випул Хадия

2
@VipulHadiya измените строку формата даты на %d/%m/%Yаналогичную, поэтому STR_TO_DATE('31/11/1015', '%d/%m/%Y')имейте в виду, что выходные данные будут иметь YYYY-MM-DDформат DATE данных.
Fyrye

1
Ответы только для кода имеют низкое значение в StackOverflow. Пожалуйста, улучшите этот правильный ответ.
mickmackusa

11

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
используйте приведенную выше страницу для ссылки на дополнительные функции в MySQL

SELECT  STR_TO_DATE(StringColumn, '%d-%b-%y')
FROM    table

скажем, например, используйте запрос ниже, чтобы получить вывод

SELECT STR_TO_DATE('23-feb-14', '%d-%b-%y') FROM table

Для формата String используйте ссылку ниже

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format


10

Вот еще два примера.

Для вывода дня, месяца и года вы можете использовать:

select STR_TO_DATE('14/02/2015', '%d/%m/%Y');

Который производит:

2015-02-14

Чтобы также вывести время, вы можете использовать:

select STR_TO_DATE('14/02/2017 23:38:12', '%d/%m/%Y %T');

Который производит:

2017-02-14 23:38:12

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.