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