0

1 ~ 2 週間前の MySQL テーブルからレコードを選択しようとしています。テーブルには日付列があります。10 日前の日付がありますが、クエリはそれを無視しています。助けていただけますか?私が使用しているクエリは次のとおりです。

$week2 = mysql_query("SELECT * FROM apps WHERE (user = '" 
.mysql_real_escape_string($_POST['username']) . "') and date BETWEEN ( DATE_SUB( NOW(), 
INTERVAL 2 WEEK), DATE_SUB( NOW(), INTERVAL 1 WEEK )");

日付を 1 週間以内にすれば、問題なくレコードを選択できます。

$week1 = mysql_query("SELECT * FROM apps WHERE (user = '" .
mysql_real_escape_string($_POST['username']) . "') and date > NOW() - INTERVAL 1 WEEK
ORDER BY id DESC limit 1");
4

1 に答える 1

0

使い方BETWEENが間違っています。

試す

DATE BETWEEN x AND y

日付として文字列を渡すこともできます。

<?php
    $startDate = date("Y-m-d", mktime(0, 0, 0, date('m'), date('d') - 14, date('Y')));
    $endDate = date("Y-m-d", mktime(0, 0, 0, date('m'), date('d') - 7, date('Y')));

    $query = "... AND DATE BETWEEN '" . $startDate . "' AND '" . $endDate . "'";

また、tadman のコメントをエコーするには、mysql_*関数の使用を停止する必要があります。それらは廃止されています。代わりにPDOまたはmysqliを使用してください。どちらを使用すればよいかわからない場合は、この SO 記事 をお読みください

于 2012-08-02T14:50:59.967 に答える