选择并在某些日期SQL之间订购ecords

时间:2017-10-07 01:26:50

标签: sql

我对SQL很陌生,所以请耐心等待。我正在尝试在SQL中编写一个查询,它将输出属于特定日期的所有记录。

这是我目前的代码,但它不起作用

SELECT 
    `Item`.`Item`, `products`.`date`
FROM
    `Item`
LEFT JOIN 
    `products` ON `products`.`ItemCode` = `Item`.`ItemCode`  
ORDER BY 
    `products`.`date` >= '2017/02/25' AND `products`.`date` <= '2017/02/27'

3 个答案:

答案 0 :(得分:1)

您需要使用WHERE条款而不是ORDER BY

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/27'

ORDER BY用于排序查询结果,WHERE用于约束查询实际检索的行。

答案 1 :(得分:1)

您应该使用curl -XGET search-movies-4f3nw7eiia2xiynjr55a2nao2y.us-west-1.es.amazon‌​aws.com/movies/_sear‌​ch来检索所需的行,您还可以使用curl -XGET search-movies-4f3nw7eiia2xiynjr55a2nao2y.us-west-1.es.amazon‌​aws.com/movies/_sear‌​ch?q=director:Burton 并在查询末尾添加WHERE

BETWEEN

答案 2 :(得分:1)

其他人已将order bywhere正确替换为您的查询,但我想讨论查询的其他部分:

  

我正在尝试在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

要准确了解日期范围,请不要使用betwen或组合&gt; =和&lt; =(之间只是&gt; =和&lt; =的快捷方式)。请改用:

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

使用LESS THAN(更大的日期+ 1)将保证您获得日期/时间范围的准确结果,无论存储数据的日期/时间精度如何。