2016-08-11 7 views
1

いくつかの理由で、次のselect文はmariadb 10では実行されませんが、mariadb 5.5ではうまく実行されます。 5.5では、2つの時間範囲のデータベースから値を選択します。同じデータベースを使用して10.を選択できません。何が問題なの?誰でも? ありがとうございます。SELECT文はmariadb 10.0では動作しませんが、mariadb 5.5で動作します

$_SESSION['post-data'] = $_POST; 

$t1 = $_SESSION['post-data']['t1']; 
$t2 = $_SESSION['post-data']['t2']; 
$time1 = mysqli_real_escape_string($conn, $t1); 
$time2 = mysqli_real_escape_string($conn, $t2); 

$sql = "SELECT DISTINCT msisdn FROM customer WHERE DATE_FORMAT(time_paid,'%Y-%c-%e') 
    BETWEEN ADDDATE('$time1',INTERVAL 0 HOUR) 
     AND ADDDATE('$time2',INTERVAL '23:59' HOUR_MINUTE)"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    echo "Number of Recipients: "; echo "$result->num_rows <br> <br>"; 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
$mobilenumber[] = $row['msisdn']; 

    } 
} else { 
    echo "No Contacts to Display"; 
} 

$mob_numbers = implode(", " , $mobilenumber); 
echo "$mob_numbers"; 
$_SESSION['numbers'] = $mob_numbers; 
+0

その後にBETWEENを変更? –

+0

'Server version:5.5.49-MariaDB-1ubuntu0.14.04.1(Ubuntu)'では正常に動作しますが、 'Server version:10.0.26-MariaDB-1〜正確なmariadb.orgバイナリディストリビューション 'は失敗します。 –

+0

エラーがありますか?間違った結果?あなたは両方のデータベースに同じデータを持っていますか? – Philipp

答えて

0

はtime_paidがDATEまたはDATETIMETIMESTAMPであると仮定しDATE_FORMATを使用して気にしないでください。そうすればインデックスを使うことができます。次に、この複合体を追加します。INDEX(time_paid, msisdn);それは有用で「カバーする」でしょう。あなたはどのMySQLバージョンを使用している

SELECT DISTINCT msisdn 
    FROM customer 
    WHERE time_paid >= $time1 
     AND time_paid < $time2 + INTERVAL 1 DAY 
関連する問題