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

Jos*_*nte 135 mysql string date

我有一个string列作为一个date,我想选择它作为一个date.

可能吗?

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

blu*_*oot 237

正如在MySQL中所说的那样使用带有日期文本的字符串列作为日期字段,您可以这样做

SELECT  STR_TO_DATE(yourdatefield, '%m/%d/%Y')
FROM    yourtable
Run Code Online (Sandbox Code Playgroud)

您还可以在WHERE子句中处理这些日期字符串.例如

SELECT whatever
  FROM yourtable
 WHERE STR_TO_DATE(yourdatefield, '%m/%d/%Y') > CURDATE() - INTERVAL 7 DAYS
Run Code Online (Sandbox Code Playgroud)

您可以通过这种方式处理各种日期/时间布局.请参阅函数的格式说明符,DATE_FORMAT()以查看可以放入第二个参数的内容STR_TO_DATE().

  • 我认为它应该是INTERVAL 7 DAY而不是DAYS (5认同)

Bal*_*a R 44

STR_TO_DATE('12/31/2011', '%m/%d/%Y')
Run Code Online (Sandbox Code Playgroud)

  • @VipulHadiya将日期格式字符串更改为'%d /%m /%Y`,如此`STR_TO_DATE('31/11/1015','%d /%m /%Y')`请记住输出将是在`YYYY-MM-DD`格式中作为`DATE`数据类型. (2认同)

Bha*_*aja 9

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
Run Code Online (Sandbox Code Playgroud)

例如,使用以下查询来获取输出

SELECT STR_TO_DATE('23-feb-14', '%d-%b-%y') FROM table
Run Code Online (Sandbox Code Playgroud)

对于String格式,请使用以下链接

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format


aal*_*ane 9

这是另外两个例子.

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

select STR_TO_DATE('14/02/2015', '%d/%m/%Y');
Run Code Online (Sandbox Code Playgroud)

哪个产生:

2015年2月14日

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

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

哪个产生:

2017-02-14 23:38:12


Abd*_*leh 7

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

\n
STR_TO_DATE(str,fmt);\n
Run Code Online (Sandbox Code Playgroud)\n

STR_TO_DATE()根据 fmt 格式字符串将 str 字符串转换为日期值。该函数可能会根据输入和格式字符串STR_TO_DATE()返回DATETIMEDATETIME值。如果输入字符串非法,STR_TO_DATE()函数返回NULL。

\n

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

\n
SELECT STR_TO_DATE(\'21,5,2013\',\'%d,%m,%Y\');\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

基于格式字符串\xe2\x80\x98%d, %m, %Y\xe2\x80\x99,该STR_TO_DATE()函数扫描\xe2\x80\x9821,5,2013\xe2\x80\x99输入字符串。

\n
    \n
  • 首先,它尝试在输入字符串中查找 %d 格式说明符的匹配项,该说明符是一个月中的某一天 (01\xe2\x80\xa631)。由于数字 21 与 %d 说明符匹配,因此该函数将 21 作为日期值。
  • \n
  • 其次,由于格式字符串中的逗号 (,) 文字字符\n与输入字符串中的逗号匹配,因此该函数继续\n检查第二个格式说明符 %m ,即一个月 (01\xe2\x80\xa612) ,并且\n发现数字 5 与 %m 格式说明符匹配。它采用数字 5 作为月份值。
  • \n
  • 第三,在匹配第二个逗号 (,) 后,STR_TO_DATE()\n函数不断查找第三个格式说明符 %Y 的匹配项,\n这是四位数的年份,例如 2012,2013 等,并且\n将数字 2013 作为年份值。
  • \n
\n

STR_TO_DATE()函数在根据格式字符串解析输入字符串时会忽略输入字符串末尾的额外字符。请参见以下示例:

\n
SELECT STR_TO_DATE(\'21,5,2013 extra characters\',\'%d,%m,%Y\');\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

更多详情:参考

\n