如何在mysql中将字符串转换为日期?

时间:2011-03-05 03:09:47

标签: mysql string date

我有string列作为date,我想将其选为date

有可能吗?

我的样本数据格式是; month/day/year - > 12/31/2011

5 个答案:

答案 0 :(得分:225)

正如MySQL Using a string column with date text as a date field所说,你可以做到

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

您可以通过这种方式处理各种日期/时间布局。请参阅the format specifiers for the DATE_FORMAT() function,了解您可以将哪些内容添加到STR_TO_DATE()的第二个参数中。

答案 1 :(得分:42)

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

答案 2 :(得分:8)

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

答案 3 :(得分:8)

这是另外两个例子。

要输出日,月和年,您可以使用:

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

产生:

  

2015年2月14日

要输出时间,您可以使用:

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

产生:

  

2017-02-14 23:38:12

答案 4 :(得分:0)

以下说明了STR_TO_DATE()函数的语法:

STR_TO_DATE(str,fmt);

STR_TO_DATE()根据fmt格式字符串将str字符串转换为日期值。 STR_TO_DATE()函数可以根据输入和格式字符串返回 DATE TIME DATETIME 值。如果输入的字符串不合法,则STR_TO_DATE()函数将返回NULL。

以下语句将字符串转换为 DATE 值。

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

enter image description here

STR_TO_DATE()函数基于格式字符串'%d,%m,%Y',扫描 '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');

enter image description here

更多详细信息:Reference