9

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

Column: Date 
Type: TIMESTAMP 
Attributes: ON UPDATE CURRENT_TIMESTAMP 
Default: CURRENT_TIMESTAMP

所以每个数据都会以这种格式显示:“2013-07-06 14:32:18”

我正在寻找一个 SQL 查询,该查询显示检索“2013-07-06”中的行。

我尝试了什么:

select * from posts where date between "2013-07-05 00:00:00" and "2013-07-07 00:00:00";
4

4 回答 4

9

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

SELECT * FROM posts WHERE DATE(date) = '2013-07-06'

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

SELECT * FROM posts WHERE date >= '2013-07-06' AND date < '2013-07-07'

MySQL 将隐式添加时间00:00:00到日期文字,但如果愿意,您可以显式包含它们。

请注意,BETWEEN ... AND ...它包括其操作数,因此BETWEEN "2013-07-05 00:00:00" AND "2013-07-07 00:00:00"将包括 on 上的所有记录2013-07-05以及on 上2013-07-06的任何记录。00:00:002013-07-07

于 2013-07-13T09:03:44.087 回答
0
select * from posts where date(date) = "2013-07-06";
于 2013-07-13T08:40:25.293 回答
0

您也可以使用它。

select * from posts where date like "2013-07-05%"
于 2017-05-24T11:59:33.133 回答
-1

使用以下查询

select * from posts where date >= "2013-07-06 00:00:00" and date < "2013-07-07 00:00:00";
于 2013-07-13T08:46:45.497 回答