Php 查询以查找部分匹配项

Php 查询以查找部分匹配项,php,mysql,Php,Mysql,我想编写一个查询,以查找“schedule\u items”表中与日期时间字段的YYYY-MM-DD值匹配的所有项目 类似于:选择*FROMschedule\u items where start?matches?“$日期' 其中start是一个DATETIME字段,数据类似于2009-09-23 11:34:00,$date类似于2009-09-23 我可以这样做,还是需要加载所有值,然后分解并比较DATETIME开始字段中的值?您可以像在MySQL中一样使用 SELECT * FROM sc

我想编写一个查询,以查找“schedule\u items”表中与日期时间字段的YYYY-MM-DD值匹配的所有项目

类似于:选择*FROMschedule\u items where start?matches?“$日期'

其中start是一个DATETIME字段,数据类似于2009-09-23 11:34:00,$date类似于2009-09-23


我可以这样做,还是需要加载所有值,然后分解并比较DATETIME开始字段中的值?

您可以像在MySQL中一样使用

SELECT * FROM schedule_items WHERE start LIKE 'some-date%'
您将%符号作为通配符


请注意,like可能是一个非常繁重的问题。特别是如果在字符串开头使用%时。

在SQL中,可以使用LIKE而不是=,然后得到%通配符。例如:

select ... where start like "2009-09-%";

如果您正在处理日期,那么这将与2009年8月的任何日期相匹配,就像您所说的:

其中start将是DATETIME字段 数据如2009-09-2311:34:00和 $date应该是这样的 2009-09-23

使用LIKE可能不是唯一/最好的解决方案:有些函数处理日期;您可能也可以使用比较运算符

在您的情况下,您可能可以使用以下内容:

select * 
from headers_sites 
where date_fetch >= '2009-07-15' 
limit 0, 10
当然,您必须使此查询适应您的表/字段;我想,像这样的事情也许可以:

SELECT * FROM schedule_items WHERE start >= '$date'
这将获得日期比$date更晚的所有数据

如果您只想要一天的日期,可以这样做:

SELECT * 
FROM schedule_items 
WHERE start >= '$date'
    and start < adddate('$date', interval 1 day)

若你们开始的列有一个索引,那个么这可能比喜欢的要好——尽管不确定;但是,尽管如此,从你的询问中,你愿意得到什么是显而易见的。。。这很好。

如果需要从datetime字段提取日期记录,则需要使用以下格式:


从计划项目中选择*日期开始=‘某个日期时间’

它会增加多少行?这取决于系统。如果你担心的话。然后查看慢速查询日志,如果您有它,因为我想匹配的日期是2009-10-09或任何存储在$ymd中的内容,我喜欢$ymd%是的,应该可以。只需确保在将用户提供的任何内容放入SQL之前,您都可以mysql\u real\u escape\u string。我可以这样做吗:选择*from schedule\u items,其中start='$ymd'事件,当然$ymd将是YYYY-MM-DD,并且。。开始将是YYYY-MM-DD 00:00:00不,您不能:正如您所说,=符号的一侧将有00:00:00;你将在第二个基础上匹配,而不是在白天-即,你不会匹配太多。嗨,小潘达,只需要问一下你编辑了什么?好像和我写的一样。。。