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

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

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

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

4 ответа

Решение

Как сказали в 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 DAYS

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

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

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

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

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

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

Ниже показан синтаксис STR_TO_DATE() функция:

       STR_TO_DATE(str,fmt);

В STR_TO_DATE()преобразует строку str в значение даты на основе строки формата fmt. В STR_TO_DATE()функция может возвращать значение DATE, TIME или DATETIME на основе входных и форматных строк. Если входная строка недопустима, STR_TO_DATE() функция возвращает NULL.

Следующая инструкция преобразует строку в значение DATE.

       SELECT STR_TO_DATE('21,5,2013','%d,%m,%Y');

На основании формата строка '% D, % м, %Y', тем STR_TO_DATE()функция просматривает входную строку " 21,5,2013".

  • Во-первых, он пытается найти совпадение для спецификатора формата%d, который является днем ​​месяца (01…31), во входной строке. Поскольку число 21 совпадает со спецификатором%d, функция принимает 21 в качестве значения дня.
  • Во-вторых, поскольку буквальный символ запятой (,) в строке формата совпадает с запятой во входной строке, функция продолжает проверять второй спецификатор формата%m, который представляет собой месяц (01…12), и обнаруживает, что число 5 соответствует спецификатору формата% m. В качестве значения месяца используется цифра 5.
  • В-третьих, после сопоставления второй запятой (,) STR_TO_DATE() функция продолжает находить совпадение для третьего спецификатора формата%Y, который представляет собой четырехзначный год, например, 2012,2013 и т. д., и принимает число 2013 в качестве значения года.

В STR_TO_DATE()функция игнорирует лишние символы в конце входной строки, когда она анализирует входную строку на основе строки формата. См. Следующий пример:

       SELECT STR_TO_DATE('21,5,2013 extra characters','%d,%m,%Y');

Подробнее: Ссылка

Другие вопросы по тегам