我有一个数据库和一个包含以下属性的表:
Column: Date
Type: TIMESTAMP
Attributes: ON UPDATE CURRENT_TIMESTAMP
Default: CURRENT_TIMESTAMP
因此,每种数据都将以这种格式显示:“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";
答案 0 :(得分:8)
您可以使用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"
将包含2013-07-05
和2013-07-06
上的所有记录以及00:00:00
上的所有记录2013-07-07
。
答案 1 :(得分:0)
select * from posts where date(date) = "2013-07-06";
答案 2 :(得分:0)
使用以下查询
select * from posts where date >= "2013-07-06 00:00:00" and date < "2013-07-07 00:00:00";
答案 3 :(得分:0)
你也可以使用它。
select * from posts where date like "2013-07-05%"