0

$year と $month があり、タイムスタンプが 1 年/月より後で、別の年/月より前であるすべてのレコードを選択する必要があります。

WHERE m.id = :magazineId
      AND t.isChargedBack IS FALSE
      AND t.`timestamp` >= STR_TO_DATE(:year'-08-01', '%Y-%m-%d')
      AND t.`timestamp` < STR_TO_DATE('2013-09-01', '%Y-%m-%d')

開始するために、年のエントリの 1 つだけをサブアウトしたところ、クエリは行を見つけられなくなりました。

これをどのようにパラメータ化するのですか?

4

4 に答える 4

0

使用してみましたか:

`t`.`timestamp` BETWEEN "$DATE1" AND "$DATE2"?

MySQL 間

STR_TO_DATE を使用する代わりに、日付をタイムスタンプに変換してみてください。

于 2013-08-23T20:51:29.077 に答える
0

これを試して:

$date1 = strtotime('01-08-$year');
$date2 = strtotime('01-09-2013');

$query = "SELECT * from your_table WHERE m.id = '{$magazineId}' AND t.isChargedBack IS FALSE
  AND t.`timestamp` BETWEEN  '{$date1}' AND '{$date2}'";
于 2013-08-23T21:01:40.103 に答える
0
$mysqli = new mysqli("host", "user", "password", "world");
$mymagazineid = "Foo";
$year = "2013";

$parameter_clause = <<<EOD
   SELECT * FROM YourTable
   WHERE m.id = ?
   AND t.isChargedBack IS FALSE
   AND t.`timestamp` >= STR_TO_DATE(?, '%Y-%m-%d')
   AND t.`timestamp` < STR_TO_DATE('2013-09-01', '%Y-%m-%d')
EOD;

$stmt = mysqli_prepare($mysqli, $parameter_clause);
mysqli_stmt_bind_param($stmt, "ss", $mymagazineid, "$year-08-01");
mysqli_stmt_execute($stmt);
于 2013-08-23T20:54:33.553 に答える