0

私の要件は、データベースの列の1つに従って、現在の時刻からわずか5分しか残っていないmysqlデータベースからレコードをプルすることです。列にはユーザーが日時を挿入しています。

     date_default_timezone_set("UTC");
  $utc_time = date("Y-m-d H:i:s", time());
 echo "UTC Time: " . $utc_time . "<br>";


$result = mysql_query("select reminder_text, reminder_subject, reminder_date_time_utc  $table_name where (TIME_TO_SEC (TIMEDIFF(reminder_date_time_utc , '$utc_time')) < 300) AND (TIMEDIFF(reminder_date_time_utc , '$utc_time')) > 0) ") or die(mysql_error());

ここで、TIMEDIFF関数内のreminder_date_timeは、DATETIMEを取得するための列名です。このクエリを使用しても結果は得られませんが、reminder_date_time の代わりに日付を配置すると、正しい出力が得られます。たとえば、TIMEDIFF('2013-07-12 11:05:00' , '$utc_time') と言うと、正しい出力が得られます。そして、この同じ値: 2013-07-12 11:05:00 は、この列の行の 1 つに実際に存在します。

私が間違っているアドバイス... TIMEDIFF 関数は、列名をパラメーターの 1 つとして受け入れませんか。

4

2 に答える 2

0

またはDATE_ADD()関数を使用します:

'SELECT * FROM ' . $tablename . ' WHERE reminder_date_time_utc > DATE_ADD(NOW(), INTERVAL -'5' SECOND));

于 2013-07-12T07:51:09.597 に答える
0

SQL で FROM を忘れていませんか? 次のようにしようとしないのはなぜですか:

$utc_time = date("Y-m-d H:i:s", time() - 30000);

クエリを次のように変更します

'SELECT * FROM ' . $tablename . ' WHERE reminder_date_time_utc > "' . $utc_time . '"';
于 2013-07-12T07:43:01.710 に答える