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

我有一个 绳子列作为一个 约会,我想选择它作为一个 DATE

有可能吗?

我的示例数据格式如下:

- > 12/31/2011

474136 次浏览
STR_TO_DATE('12/31/2011', '%m/%d/%Y')

使用包含日期文本的字符串列作为日期字段告诉我们,你可以做到

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()的第二个参数。

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

这是另外两个例子。

要输出日期、月份和年份,可以使用:

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-1423:38:12

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

STR_TO_DATE(str,fmt);

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

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

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

enter image description here

基于格式化字符串 ’% d,% m,% Y’STR_TO_DATE()函数扫描 2013年5月21日输入字符串。

  • 首先,它试图找到与% 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

更多详情: 参考文献