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


149

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

可能吗?

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

Answers:


258

正如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 DAY

您可以通过这种方式处理各种日期/时间布局。请参阅DATE_FORMAT()函数的格式说明符,以了解可以在中添加第二个参数的内容STR_TO_DATE()


6
我认为应该是INTERVAL 7 DAY,而不是DAYS
Feras Odeh'Feb

1
我有一个类似“ dd-mmm-yyyy”格式的字符列。如何查询“ dd-mm-yyyy”格式?
MAX

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

什么是日期以DD / MM / YYYY格式存储(例如31/11/1015)?
Vipul Hadiya

2
@VipulHadiya将日期格式字符串更改为%d/%m/%Ylike,因此STR_TO_DATE('31/11/1015', '%d/%m/%Y')请记住,输出将YYYY-MM-DD采用DATE 数据类型的格式。
fyrye '16

1
仅代码的答案在StackOverflow上是低价值的。请改善此正确答案。
mickmackusa


10

这是另外两个例子。

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.