查询以查找部分匹配
我想写一条查询来查找我的'schedule_items'
表中与DATETIME
字段的值YYYY-MM-DD
匹配的所有项目。查询以查找部分匹配
类似:SELECT * FROM
schedule_items WHERE
开始?matches? '$date'
的地方开始将是一个DATETIME
场数据,如2009-09-23 11:34:00
和$date
会是这样的:2009-09-23
我能做到这一点还是需要加载所有的值,然后爆炸和比较我的DATETIME start
字段中的值?
您可以像使用MySQL中
SELECT * FROM schedule_items WHERE start LIKE 'some-date%'
你把一个%符号作为通配符。
请注意,虽然这可能是一个非常沉重的查询。特别是如果你在字符串的开头使用%。
如果您正在使用日期,喜欢它似乎你说:
的地方开始将是一个DATETIME场 与数据一样2009-09-23 11:34:00和 $日期将类似于 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)
这可能是比“赞”好,如果你开始列有索引 - 不知道,虽然,但是,仍然,你愿意从你的查询中明白你的意思......那很好。
我可以这样做:SELECT * FROM'schedule_items' WHERE'start' ='$ ymd'event虽然肯定... $ ymd将是YYYY-MM-DD并且..'start'将会是YYYY-MM-DD 00:00:00 – ian 2009-09-08 19:54:55
不,您不能:正如您所说,=号的一侧将有00:00:00;你会比赛的第二个基础,而不是一天 - 即,你不会匹配太多。 – 2009-09-08 19:56:24
如果需要从时间字段提取日期的记录,您需要使用以下格式:
SELECT * FROM schedule_items WHERE date(start) = 'some-date time'
嗨LittlePanda,只需要问你编辑了什么?它看起来和我写的一样... – 2015-04-16 10:50:12
什么行的金额将它变得沉重的? – ian 2009-09-08 18:50:46
这取决于系统。如果你担心。再看看慢查询日志(如果您有它) – 2009-09-08 19:04:05