其他人正确地where
取代order by
为您的查询,但我想讨论的查询的另一部分:将输出的所有记录落入特定日期内 是
我试图做一个查询在SQL 。
尽管这可能并不明显,但数据的“精确度”可能会影响最佳实现日期范围的方式。例如,如果你的数据是准确的,只是一个日期,然后WHERE products.date >= '2017/02/25' AND products.date <= '2017/02/27'
或WHERE products.date BETWEEN '2017/02/25' AND '2017/02/27'
会选择仅低于3个大胆行:但是,如果你的数据是精确到秒(或毫秒)你得到了不同的结果
2017/02/24
2017/02/25
2017/02/26
2017/02/27
2017/02/28
,仅有2粗体行
2017/02/24 12:13:14
2017/02/25 12:13:14
2017/02/26 12:13:14
2017/02/27 12:13:14
2017/02/28 12:13:14
要准确有关日期范围不介乎使用或组合> =和< =(之间仅仅是> =和< =快捷方式)。使用这个来代替:
SELECT `Item`.`Item`, `products`.`date`
FROM `Item`
LEFT JOIN `products` ON `products`.`ItemCode` = `Item`.`ItemCode`
WHERE `products`.`date` >= '2017/02/25' AND `products`.`date` < '2017/02/28'
2017/02/24 12:13:14
2017/02/25 12:13:14
2017/02/26 12:13:14
2017/02/27 12:13:14 this is less than '2017/02/28'
2017/02/28 12:13:14
使用少于(大日期+ 1)将保证你得到的日期/时间范围内精确的结果,无论是存储数据的日期/时间精度。
标记您正在使用的特定类型的SQL:MySQL,PostgreSQL等? – treyhakanson
你的查询非常清楚MySQL的反引号,所以你应该用MySQL标记问题 - 总是指定dbms的类型 –