我有string
列作为date
,我想将其选为date
。
有可能吗?
我的样本数据格式是; month/day/year
- > 12/31/2011
答案 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');
STR_TO_DATE()
函数基于格式字符串'%d,%m,%Y',扫描 '21,5,2013'输入字符串。
STR_TO_DATE()
函数会不断查找与第三种格式说明符%Y的匹配项,
这是四位数的年份,例如2012、2013等,它需要
以2013为年值。当STR_TO_DATE()
函数根据格式字符串解析输入字符串时,它会忽略输入字符串末尾的多余字符。请参见以下示例:
SELECT STR_TO_DATE('21,5,2013 extra characters','%d,%m,%Y');
更多详细信息:Reference