Php 使用MySQL操作字符串作为日期?

Php 使用MySQL操作字符串作为日期?,php,mysql,date,Php,Mysql,Date,我正在使用一个MySQL表,该表的时间戳2016-12-28T21:42:53.000-04:00项作为CHAR字段提供。 我需要做的任务之一是检索当前日期的所有记录 现在我要做的是将当前日期以与MySQL表中相同的格式输入到php变量($date)ie 2016-12-28并使用LIKE语句查找与之匹配的所有记录 例如,当我需要查找过去10天的所有记录时,就会出现问题 是否需要将该字段转换为有效的日期字段,以便用于更复杂的查询,如查找最后10天等 任何方向正确的提示都将受到欢迎, 谢谢您可以将

我正在使用一个MySQL表,该表的时间戳
2016-12-28T21:42:53.000-04:00
项作为
CHAR
字段提供。 我需要做的任务之一是检索当前日期的所有记录

现在我要做的是将当前日期以与MySQL表中相同的格式输入到
php
变量
($date)
ie 2016-12-28
并使用
LIKE
语句查找与之匹配的所有记录

例如,当我需要查找过去10天的所有记录时,就会出现问题

是否需要将该字段转换为有效的日期字段,以便用于更复杂的查询,如查找最后10天等

任何方向正确的提示都将受到欢迎,
谢谢

您可以将其转换为日期。一种方法是:

select date(left(field, 10))
我应该补充一点,这在
where
子句中同样有效:

where date(left(field, 10)) >= date_sub(curdate(), interval 10 day)
但是。在列上使用函数可以避免使用索引。在本例中,您有一个良好的日期格式,因此可以执行以下操作:

where field >= date_format(date_sub(curdate(), interval 10 day), '%Y-%m-%d')
此版本可以利用
字段
上的索引


所有这些都表明。强烈建议使用正确的类型存储字段。

您只需将其转换为日期即可。一种方法是:

select date(left(field, 10))
我应该补充一点,这在
where
子句中同样有效:

where date(left(field, 10)) >= date_sub(curdate(), interval 10 day)
但是。在列上使用函数可以避免使用索引。在本例中,您有一个良好的日期格式,因此可以执行以下操作:

where field >= date_format(date_sub(curdate(), interval 10 day), '%Y-%m-%d')
此版本可以利用
字段
上的索引


所有这些都表明。强烈建议使用正确的类型存储字段。

非常感谢!对于其他发现此问题的人,根据上述答案,我将执行以下操作,从订单中查找前10天
选择日期(左(创建日期,10)),其中date(左(创建日期,10))>=date\u ADD(CURDATE(),INTERVAL-10天)
非常感谢Gordon!对于其他发现此问题的人,根据上述答案,我将执行以下操作,从订单中查找前10天
选择日期(左(创建日期,10)),其中日期(左(创建日期,10))>=日期添加(CURDATE(),间隔-10天)