codememo

SELECT 문은 mariadb 10.0에서는 작동하지 않지만 mariadb 5.5에서는 작동합니다.

tipmemo 2023. 8. 31. 23:55
반응형

SELECT 문은 mariadb 10.0에서는 작동하지 않지만 mariadb 5.5에서는 작동합니다.

어떤 이유로 다음 select 문은 mariadb 10에서는 실행되지 않지만 mariadb 5.5에서는 잘 실행됩니다.5.5에서는 두 시간 범위의 데이터베이스에서 값을 선택합니다.동일한 데이터베이스를 가진 10.에서 선택하지 못했습니다.무엇이 문제일까요?누구라도 있나요?감사해요.

$_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;

사용할 필요 없음DATE_FORMATtime_payed를 다음과 같이 가정합니다.DATE또는DATETIME또는TIMESTAMP그러면 색인을 사용할 수 있습니다.그런 다음 이 복합 재료를 추가합니다.INDEX(time_paid, msisdn)그것은 도움이 될 것이고 "도움이 될 것입니다.

그런 다음 변경합니다.BETWEEN대상:

SELECT DISTINCT msisdn
    FROM customer
    WHERE time_paid >= $time1
      AND time_paid  < $time2 + INTERVAL 1 DAY

언급URL : https://stackoverflow.com/questions/38890316/select-statement-not-working-in-mariadb-10-0-but-works-in-mariadb-5-5

반응형