Mysql在两个日期和时间之间进行搜索


Mysql search between two date with time

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

2015-10-10 02:23:41 am

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

2015-10-10

02:23:41 am

有什么想法吗?

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

这两个搜索条件将在您指定的范围内查找具有Date值的所有行。(我忽略了你问题中2015-09-10 02末尾的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条件不是可搜索的,因此查询速度会较慢。

请注意,范围的开头使用>=——在午夜或午夜之后,范围的末尾使用<——在午夜之前。

专业提示:避免在列名中使用像DATE这样的保留字。如果你在编写查询时出错,它们的存在会让MySQL感到困惑,更不用说你了,还会让你放慢速度。

我可以建议:

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

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

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

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