Как преобразовать строку в дату в 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()
,
Вот еще два примера.
Для вывода дня, месяца и года вы можете использовать:
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');
Подробнее: Ссылка