0

MySQLデータベースのこの日時を現在と比較するにはどうすればよいですか?

MySQL関数now()を使用してデータベースレコードの日付を送信し、30日以上経過したレコードを検出しようとしました。

if (date_diff($myrow["LastLogin"], time()) > -30) {
  }

$myrow["LastLogin"]テキストとして表示されるため、有効な値が含まれています。データベースで「日時」タイプであることが確認されました。

ここにコードの詳細があります。

if ($myrow = mysql_fetch_array($result_set)) { 

  do {
      if (date_diff($myrow["LastLogin"], getdate()) > -30) {
        echo "<tr>";
        echo "<td>" . $myrow["PCName"] . '&nbsp;</td>';
        echo "<td>" . $myrow["LastLogin"] . '&nbsp;</td>';
        echo "</tr>\n";
      }
  } while ($myrow = mysql_fetch_array($result_set));  
}

ありがとう!

4

3 に答える 3

7

コードではなく、クエリで実行してください。

SELECT * FROM myTable WHERE LastLogin < DATE_SUB(NOW(), INTERVAL 30 DAY)
于 2012-07-18T14:57:58.290 に答える
1

このクエリは、lastlogin 値が 30 日以上経過しているレコードを削除します。

Delete from table where ((now() - lastlogin) > (30*24*60*60))
于 2012-07-18T15:03:23.807 に答える
1

サーバー側でそれを行うことができます

SELECT * FROM logins WHERE LastLogin < NOW() - INTERVAL 30 DAY

クライアント側で行う必要がある場合UNIX_TIMESTAMPは、整数を返す方が使いやすいかもしれません:

SELECT l.*,UNIX_TIMESTAMP(LastLogin) AS LastLogin_i FROM logins l

これらのどちらもニーズに合わない場合は、次をLastLogin使用して返された文字列を変換できstrtotime()ます。

lastLogin_i = strtotime($myrow["LastLogin"]);
于 2012-07-18T14:58:49.270 に答える