4

我的表上有一个 DATETIME 列,用于存储创建记录的时间。我只想选择在特定日期创建的记录。如果我尝试:

SELECT * 
FROM myTable
WHERE postedOn =  '2012-06-06'

即使表中有许多行postedOn设置为 2012-06-06 21:42:022012-06-06 07:55:17等,它也不返回任何行。

有任何想法吗?

4

3 回答 3

11

使用DATE标量:

SELECT * 
FROM myTable
WHERE date(postedOn) =  '2012-06-06'
于 2012-06-06T22:36:12.800 回答
2
SELECT *
FROM myTable
WHERE DATE(postedOn) = '2012-06-06'

DATE() 返回日期时间字段的日期部分。

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date

于 2012-06-06T22:36:11.267 回答
1

通过在日期中添加一天来创建时间范围:

SELECT * 
FROM myTable
WHERE postedOn >= '2012-06-06' and postedOn < '2012-06-07'

这是最有效的方式,因为查询可以使用字段上的索引。

于 2012-06-06T22:44:37.183 回答