在MySQL中,我使用以下查询来获取2015-02-02和2015-02-06之间具有UpdatedAt字段的记录
SELECT `TotalPrice`,`UpdatedAt` FROM `price` WHERE `UpdatedAt`>= '2015-02-02' AND `UpdatedAt`<='2015-02-06' ORDER BY `UpdatedAt` DESC
这显示了2015-02-05至2015-02-02的UpdatedAt。该表也有2015-02-06的记录。请说明我所犯的错误。
答案 0 :(得分:4)
我的猜测是UpdatedAt
有一个时间组件。这是另一个where
子句:
WHERE `UpdatedAt` >= '2015-02-02' AND `UpdatedAt` < '2015-02-07'
您可能会发现这更具可读性:
WHERE `UpdatedAt` >= '2015-02-02' AND
`UpdatedAt` < DATE_ADD('2015-02-06', INTERVAL 1 DAY)
你不习惯做的事情是:
WHERE DATE(UpdatedAt) >= '2015-02-02' AND DATE(UpdatedAt) <= '2015-02-06'
虽然技术上正确,但这可以防止使用索引。