我的桌子上有一个DATETIME列,用于存储创建记录的时间。我想只选择在特定日期创建的记录。如果我尝试:
SELECT *
FROM myTable
WHERE postedOn = '2012-06-06'
即使表中有很多行设置为postedOn
,它也不会返回任何行
2012-06-06 21:42:02
,2012-06-06 07:55:17
,等等。
有什么想法吗?
答案 0 :(得分:11)
使用DATE标量:
SELECT *
FROM myTable
WHERE date(postedOn) = '2012-06-06'
答案 1 :(得分: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
答案 2 :(得分:1)
通过在日期中添加一天来创建时间范围:
SELECT *
FROM myTable
WHERE postedOn >= '2012-06-06' and postedOn < '2012-06-07'
这是最有效的方法,因为查询可以在字段上使用索引。