我对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'
答案 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.amazonaws.com/movies/_search
来检索所需的行,您还可以使用curl -XGET search-movies-4f3nw7eiia2xiynjr55a2nao2y.us-west-1.es.amazonaws.com/movies/_search?q=director:Burton
并在查询末尾添加WHERE
:
BETWEEN
答案 2 :(得分:1)
其他人已将order by
与where
正确替换为您的查询,但我想讨论查询的其他部分:
我正在尝试在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)将保证您获得日期/时间范围的准确结果,无论存储数据的日期/时间精度如何。