2016-09-12 9 views
0

私のコード関数は、範囲を選択した年で/からtoまでのすべての値を取得します。選択した年の日付をすべて取得するにはどうすればいいですか?

私は、ユーザーが2つのドロップダウンから1つの年を選択することができます。しかし、ツアーには選択された年よりも小さい/大きい両方のシーズンがある場合、私はバグがあります。例:

へ/からシーズンを選択:2015 -2016

from   to 
2011-05-06 2014-11-12 (not get - work) 
2012-04-01 2015-12-31 (get - work) 
2015-01-01 2016-08-10 (get - work) 
2016-08-11 2018-12-28 (get - work) 
2017-01-01 2018-01-01 (not get - work) 

2014-01-11 2017-01-01 (I want get this too, because my selected year is 2015-2016) 

マイコード:

$first_day = mktime(0, 0, 0, 1, 1, $params['seasonfrom']) ; //2015-01-01 
$first_day = "'".date('Y-m-d',$first_day)."'"; 

$last_day = mktime(0, 0, 0, 12, 31, $params['seasonto']) ; //2016-12-31 
$last_day = "'".date('Y-m-d',$last_day)."'"; 

$str1.="(ts.SsnFrom >= {$first_day} AND ts.SsnFrom <={$last_day} 
OR ts.SsnTo >= {$first_day} AND ts.SsnTo <={$last_day})"; 

誰かが私に解決策.Thanksを与えることができます!

答えて

0

PHPが分かりません。これを一般的に示唆している。これはあなたを助けるかもしれません。

$str1.="({$first_day} BETWEEN ts.SsnFrom AND ts.SsnTo OR {$last_day} BETWEEN ts.SsnFrom AND ts.SsnTo)"; 
+0

ご意見ありがとうございます。しかし、それは動作しません..私はチェックしたが、それは2シーズン(9-12-2014 - > 28-2-2015、01-10-2016 - > 01-01-2017)を取得するだけでなく、私のコードはこれを得ることができる-03-2015 - > 31-05-2015、01-09-2015 - > 02-01-2016、01-05-2016 - > 30-09-2016) – user3064132

+0

DBで試したところ、すべての行が次のように返されました。あなたは期待した。このSQlfiddleを参照してくださいhttp://sqlfiddle.com/#!9/bbc556/1 – Ponnarasu

+0

ありがとうございます。この条件を追加して固定:)) OR(ts.SsnFrom <= {$ first_day} AND ts.SsnTo> = {$ last_day}) – user3064132

関連する問題