2016-10-19 9 views
1

2つの日付の間に販売データを取得したいが、SQLクエリが正しく機能しない。SQL Where Date条件

saledate column

if($_GET['startdate']) 
    { 
    $startdate = date('Y-m-d H:i:s', strtotime($_GET['startdate'])); 
    } 
    else 
    { 
    $startdate = 'NOW()'; 
    } 
    if($_GET['enddate']) 
    { 
    $enddate = date('Y-m-d H:i:s', strtotime($_GET['enddate'])); 
    } 
    else 
    { 
    $enddate = date('Y-m-d H:i:s', strtotime('-1 month')); 
    } 
    $db->setTrace('true'); 

    $sales = $db->rawQuery('SELECT * from sales where (saledate BETWEEN ? AND ?) AND deletestat = ?', [$startdate, $enddate, '0']); 
    print_r($db->trace); 

私は、SQLクエリのためjoshcam/mySQLiクラスを使用しています。

2つの日付の間でデータを取得するにはどうすればよいですか?

+0

A)あなたはどのような結果を得ていますか? B)何が問題なの?あなたは、「正しく働く」という意味、あるいはそうでないように働いていることを言いません。 – tadman

+0

あなたは間違った結果を得ていると具体的に説明していますか? – Jagrati

+0

@Jagrati私は間違いや間違った結果を得ていません。クエリー結果はnullを返します。 –

答えて

1

関数間のmysqlは期待どおりに機能しません。

between関数は、最初のパラメータが最小値であり、2番目のパラメータが最大値であると想定しています。これに

$sales = $db->rawQuery('SELECT * from sales where (saledate BETWEEN ? AND ?) AND deletestat = ?', [$startdate, $enddate, '0']); 

:あなたはこの行を変更した場合http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_between

$sales = $db->rawQuery('SELECT * from sales where (saledate BETWEEN ? AND ?) AND deletestat = ?', [$enddate, $startdate, '0']); 

それが動作しない数のドキュメントを参照してください。

+0

動作しませんでした。結果をトレースする。セールス、セールスプライス、レストプライス、コミッション、コミッショナー、利益、saledate、セールスからのタイプwhere(saledate '2016-09-10 00:00:00' AND '2016-08-10 00:00:00' )AND deletestat = '0''しかし、日付の間にデータを取得しない –

+0

ご覧のとおり、最小値と最大値は間違っています。それを切り替える必要があります。私は問題はあなたが持っていると思う - 日付がないとき1ヶ月。しかし、あなたが日付を追加すると、将来の日付を持つことができます。 – Perry

+0

データは18/09/2016までですが、データは取得されません –