两个日期之间的Mysql搜索与时间

时间:2015-12-31 20:15:22

标签: php mysql

如何在两个日期之间进行搜索,当数据库中的日期格式为:

2015-10-10 02:23:41 am

我只想在两个日期格式之间进行搜索:

2015-10-10

没有

02:23:41 am

请问任何想法?

3 个答案:

答案 0 :(得分:1)

你的问题并不完全清楚。但是,我想您希望找到表格中Date2015-08-05午夜或午夜2015-09-11以及Date午夜之后发生的所有行(您在该范围结束后的第二天)提出了你的问题。

这两个搜索条件将在您指定的范围内找到02个值的所有行。 (我在你的问题中忽略了2015-09-10 02末尾的 SELECT * FROM table WHERE `Date` >= '2015-08-05' AND `Date` < '2015-09-10' + INTERVAL 1 DAY 因为我无法猜出它是什么意思,如果有的话。)

尝试此查询:

Date

如果您有一个索引,它可以利用 SELECT * FROM table /* slow! */ WHERE DATE(`Date`) BETWEEN '2015-08-05' AND '2015-09-10' 列上的索引,因此它可以很快。

你可以写

>=

这稍微容易阅读,但WHERE条件不是sargable,因此查询速度会慢一些。

请注意,范围的开头使用< - 在午夜或之后,范围的结尾使用DATE - 在午夜之前。

专业提示:避免使用{{1}}之类的保留字作为列名。如果你在编写查询时犯了错误,那么他们的存在可能会让MySQL感到困惑,更不用说你了,并让你慢下来。

答案 1 :(得分:0)

我可以建议:

select * from table where cast(date as date) between '2015-08-05' and '2015-09-10'

如果您的where子句基于时间戳,但您使用日期作为中间人的参数,则会排除第二个日期发生的任何事情,除非它恰好发生在午夜。

答案 2 :(得分:0)

使用范围的结束日期时,请包括当天结束的时间:

SELECT *
FROM YourTable
WHERE date BETWEEN '2015-08-05' AND '2015-09-10 23:59:59'