適切

2016-03-22 8 views
0

を働いていないのmysqlで日付範囲の間で発生して下さい、私は以下のクエリを作りましたが、この日付範囲の間に2つの行がデータベースに存在しながら、それだけで1行をフェッチ:適切

SELECT * FROM resorts_seasonallevelpricingnew INNER JOIN resorts_resort ON 
resorts_seasonallevelpricingnew.resortId = resorts_resort.resortId INNER JOIN 
resorts_roomtype ON 
resorts_seasonallevelpricingnew.roomTypeId = resorts_roomtype.roomTypeId WHERE 
resorts_seasonallevelpricingnew.resortId = 601 AND 
resorts_seasonallevelpricingnew.roomTypeId = '8' AND 
(('2016-03-01 00:00:00' BETWEEN STR_TO_DATE(`fromDate`,'%Y-%m-%d') 
AND STR_TO_DATE(`toDate`,'%Y-%m-%d')) OR ('2016-03-31 00:00:00' 
BETWEEN STR_TO_DATE(`fromDate`,'%Y-%m-%d') AND STR_TO_DATE(`toDate`,'%Y-%m-%d'))) 

2行があります次の日付のデータベースを使用してください: 1から15-03-2016まで:23-03-2016 2から:24-03-2016から:31-03-2016

私が欲しいのは、ユーザーが日付ピッカーから日付と日付を選択して検索すると、日付と時刻の間にあるすべてのレコードが表示されるはずです。 たとえば、ユーザーが1-03-2016から31-03-2015の日付を検索し、日付と日付が25-03-2016から10-04-2016の行がデータベースにあります。検索された日付の間に日付が来るので、その行を取得する必要があります。

+0

WHERE句を削除すると正しい行が返されますか? –

+0

はい。あなたが日付のANDを削除したときに正しい行を返します –

+1

'25 -03-2016 'と'10 -04-2016'の間の単純な試みをしました –

答えて

0

これはのために働いた。私は誰か他人がこれを必要とするかもしれないなら私の答えを掲示しています。

SELECT * FROM resorts_seasonallevelpricingnew 
INNER JOIN resorts_resort ON resorts_seasonallevelpricingnew.resortId = resorts_resort.resortId 
INNER JOIN resorts_roomtype ON resorts_seasonallevelpricingnew.roomTypeId = 
resorts_roomtype.roomTypeId 
WHERE resorts_seasonallevelpricingnew.resortId = 
601 
AND resorts_seasonallevelpricingnew.roomTypeId = '8' 
AND ( 
(STR_TO_DATE(`fromDate`,'%Y-%m-%d') BETWEEN '2016-03-01 00:00:00' AND 
'2016-03-31 00:00:00') 
OR (STR_TO_DATE(`toDate`,'%Y-%m-%d') BETWEEN 
'2016-03-01 00:00:00' AND '2016-03-31 00:00:00')) 
ORDER BY 
resorts_seasonallevelpricingnew.fromDate