2016-09-04 8 views
1

$start_date$end_dateをパラメータとして渡して、MySQLデータベーステーブルのcreatedフィールドと比較します。私はyii2フレームワークを使用しています。ここどのように書き込むかyy2のクエリ間

私が試みものである:値$start_date$end_dateテーブル内created日付異なる空の配列を返す

$modelStockDetails=StockDetails::find()->where(['BETWEEN', 'created', $start_date, $end_date])->andwhere(['receiving_order_id' =>$modelRecevingOrder->id,'deleted' => 'N'])->all(); 

しかし、テーブルにcreatedの日付とまったく同じ$start_dateを渡すと、データを含む配列が返されます。

+0

「andWhere」がないと結果はどうなりますか? –

+0

また、 'between'を小文字で試してみてください。 –

+1

生成されたクエリを見て、期待どおりのものかどうかを確認しましたか?それは私がやることです。その後、その生成されたクエリをSQL IDEで使用しますか?それは動作しますか?あなたはPHPをデバッグすることができますか? –

答えて

0

は (私のサンプルは「%D-%M-%Y」であるイムあなたのフォーマットに基づいて適切な日付フォーマット変換を使用)

str_to_dateとリテラルを使用してみてください入力の変換に関連する問題がある可能性があります
$modelStockDetails=StockDetails::find() 
    ->where(' date(created) between STR_TO_DATE("'. $start_date . '", "%d-%m-%Y") 
     AND STR_TO_DATE("' . $end_date . '", "%d-%m-%Y")') 
    ->andwhere(['receiving_order_id' =>$modelRecevingOrder->id,'deleted' => 'N'])->all(); 
+0

実際にはテーブルに作成されたタイムスタンプですので、DATE関数を使用してDATE()に作成されたパラメータを渡します –

+0

入力の適切な書式設定を試してみてください。 – scaisEdge

関連する問題