MySQL查询返回一个空集

时间:2019-03-04 07:24:12

标签: mysql sql

我有一个名为product的MySQL表,我希望从该表中按数量递减的顺序检索日期范围内的前3个数据。提供了我的表格

# product_id, stock_id, quantity, stock_timestamp
Product ID9, Stock ID2, 1050, 2019-03-04 07:06:37
Product ID8, Stock ID2, 950, 2019-03-04 07:06:27
Product ID7, Stock ID2, 85000, 2019-03-04 07:06:17
Product ID6, Stock ID1, 750, 2019-03-04 07:06:07
Product ID5, Stock ID1, 65000, 2019-03-04 07:05:57
Product ID4, Stock ID1, 550, 2019-03-04 07:05:47
Product ID3, Stock ID, 450, 2019-03-04 07:05:37
Product ID27, Stock ID5, 1950, 2019-02-28 07:05:17
Product ID26, Stock ID5, 1850, 2019-02-28 07:05:17
Product ID25, Stock ID5, 1750, 2019-02-28 07:05:17
Product ID24, Stock ID4, 211650, 2019-02-24 07:05:17
Product ID23, Stock ID4, 1550, 2019-02-24 07:05:17
Product ID22, Stock ID4, 1450, 2019-02-24 07:05:17

我按照提供的方式编写SQL查询

SELECT * FROM StockHandler.product WHERE stock_timestamp BETWEEN  DATE("2019-03-03") AND DATE("2019-03-04")  ORDER BY quantity DESC  LIMIT 3 ;

我从返回的查询中得到一个空值。我发现SQL中没有错误。那么,如何正确编写呢?

3 个答案:

答案 0 :(得分:2)

尝试以下-date()的{​​{1}}

stock_timestamp

答案 1 :(得分:1)

尝试不带日期()

SELECT * FROM StockHandler.product 
WHERE date(stock_timestamp) BETWEEN  '2019-03-03' AND '2019-03-04' 
ORDER BY quantity DESC  LIMIT 3 

答案 2 :(得分:0)

MySql会对待

DATE("2019-03-03") AND DATE("2019-03-04")

DATE("2019-03-03 00:00:00") AND DATE("2019-03-04 00:00:00")

您可以使用@ fa06的答案或将时间编辑为

DATE("2019-03-03") AND DATE_ADD('2019-03-04',INTERVAL 1 DAY)