J'ai une table MySQL nommée product à partir de laquelle je souhaite récupérer les 3 premières données dans une plage de dates par ordre décroissant de quantité. Ma table est fournie,
SELECT * FROM StockHandler.product WHERE stock_timestamp BETWEEN DATE("2019-03-03") AND DATE("2019-03-04") ORDER BY quantity DESC LIMIT 3 ;
J'écris la requête SQL telle que fournie,
# 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
J'obtiens une valeur vide de la requête retournée. Je ne trouve aucune erreur dans le SQL. Alors, comment l'écrire correctement?
3 Réponses :
Essayez ci-dessous - date () pour stock_timestamp
SELECT * FROM StockHandler.product WHERE date(stock_timestamp) BETWEEN '2019-03-03' AND '2019-03-04' ORDER BY quantity DESC LIMIT 3
MySql traitera
DATE("2019-03-03") AND DATE_ADD('2019-03-04',INTERVAL 1 DAY)
comme
DATE("2019-03-03 00:00:00") AND DATE("2019-03-04 00:00:00")
Vous pouvez utiliser la réponse de @ fa06 ou modifier l'heure à
DATE("2019-03-03") AND DATE("2019-03-04")
Essayez sans date ()
SELECT * FROM StockHandler.product WHERE date(stock_timestamp) BETWEEN '2019-03-03' AND '2019-03-04' ORDER BY quantity DESC LIMIT 3
Notez que cette solution ne peut pas utiliser d'index
Pouvez-vous publier votre syntaxe de création pour la table?
Je ne suis pas sûr de ce que vous imaginez que fera "DATE (" 2019-03-03 ")"
Le problème est résolu pour l'instant. Le tableau est généré à partir de l'application Java, donc, je ne pensais pas que vous étiez obligé de poster dans la question. Je le ferai la prochaine fois.