我想编写一个查询,以查找'schedule_items'
表格中与YYYY-MM-DD
字段的DATETIME
值匹配的所有项目。
类似于:SELECT * FROM
schedule_items WHERE
启动?matches? '$date'
如果开始是DATETIME
字段,其中2009-09-23 11:34:00
和$date
等数据就像2009-09-23
我可以这样做,还是需要加载所有值,然后展开并比较我的DATETIME start
字段中的值?
答案 0 :(得分:7)
您可以在MySQL中使用LIKE
SELECT * FROM schedule_items WHERE start LIKE 'some-date%'
您将%符号作为通配符。
请注意,虽然这可能是一个非常沉重的查询。特别是如果你在字符串的开头使用%。
答案 1 :(得分:2)
如果你正在使用日期,就好像你说的那样:
其中start是DATETIME字段 与2009-09-23 11: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)
这可能比“喜欢”更好,如果你开始列有一个索引 - 但不确定;但是,你仍然会从你的查询中明白你所愿意得到的......这很好。
答案 2 :(得分:1)
,您可以使用LIKE而不是=
,然后获得%
通配符。例如:
select ... where start like "2009-09-%";
(这与2009年8月的任何内容相符)
答案 3 :(得分:0)
如果需要从datetime字段中提取日期记录,则需要使用以下格式:
SELECT * FROM schedule_items WHERE date(start) = 'some-date time'