如何在时间戳字段中搜索日期?

ala*_*yli 7 mysql timestamp date

我有一个数据库和一个具有以下属性的表:

Column: Date 
Type: TIMESTAMP 
Attributes: ON UPDATE CURRENT_TIMESTAMP 
Default: CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

因此,每种数据都将以这种格式显示:"2013-07-06 14:32:18"

我正在寻找一个显示在"2013-07-06"中检索行的SQL查询.

我尝试了什么:

select * from posts where date between "2013-07-05 00:00:00" and "2013-07-07 00:00:00";
Run Code Online (Sandbox Code Playgroud)

egg*_*yal 9

您可以使用MySQL的DATE()函数仅获取您的日期部分TIMESTAMP:

SELECT * FROM posts WHERE DATE(date) = '2013-07-06'
Run Code Online (Sandbox Code Playgroud)

但是,这样的查询不能从date列上的索引(如果存在)中受益; 相反,可以使用如下范围:

SELECT * FROM posts WHERE date >= '2013-07-06' AND date < '2013-07-07'
Run Code Online (Sandbox Code Playgroud)

MySQL将隐式添加00:00:00日期文字的时间,但如果愿意,您可以明确地包含它们.

请注意,BETWEEN ... AND ...是包容性的操作数,所以BETWEEN "2013-07-05 00:00:00" AND "2013-07-07 00:00:00"将包括所有的记录2013-07-05,并2013-07-06在以及任何记录00:00:002013-07-07.