2016-09-08 22 views
1

MySQLクエリに問題があります。私は "products"テーブルを持っています。この表では、「product_expiry」列があります。私は2つの日付の間の "product_expiry"日付を持つすべての製品を取得するフォームを作成しようとしています。mysqlの2つの日付間でデータを取得する

たとえば、「product_expiry」の日付が「04/2016」から「09/2016」までの商品を取得したいとします。

このため、私はこのクエリを使うことにしました。

SELECT * FROM `products` WHERE MONTH(product_expiry) >= "4" AND MONTH(product_expiry) <= "9" AND YEAR(product_expiry) = "2016" 

これらの日付の間に商品がありますが、商品が返品されました。 問題は日付の書式にあると思いました。

それから私は

SELECT * FROM `products` WHERE MONTH(STR_TO_DATE(`product_expiry`,'%d,%m,%Y')) >= "4" AND MONTH(STR_TO_DATE(`product_expiry`,'%d,%m,%Y')) <= "9" AND YEAR(STR_TO_DATE(`product_expiry`,'%d,%m,%Y')) = "2016" 

を試みたが、それは再び0製品を返しています。

注: 「product_expiryは」日付の日付欄 とフォーマットVARCHARれない日/月/年

+0

を見つける9てください、2016'代わりに' "4" の整数として、 "9"、 "2016" '? – Arulkumar

+0

商品を返品する – Auj

+0

1.日付を日付として保存する – Strawberry

答えて

0

以下のクエリを使用してみてください。私はWHERE句で'%d/%m/%Y''%d,%m,%Y'を置き換える:

SELECT * 
FROM `products` 
WHERE MONTH(STR_TO_DATE(`product_expiry`, '%d/%m/%Y')) >= 4 
    AND MONTH(STR_TO_DATE(`product_expiry`, '%d/%m/%Y')) <= 9 
    AND YEAR(STR_TO_DATE(`product_expiry`, '%d/%m/%Y')) = 2016 

、あなたは `4にしようとしている場合はどうなりますWorking Demo

+0

ありがとうございました。 :) – Auj

関連する問題