1

このコードをループ内で実行し$fid、各ラウンドで値を受け取るとします。

     $result2 = mysql_query( "SELECT date_create FROM users WHERE id = $fid");

これで、date_createは次の形式になります。

2012-08-16 20:13:49

私の質問は、その日付が2012-08-10のように2012-08-31より前であるかどうかを確認するにはどうすればよいですか?

念のため、私の完全なコード。

$query = "(SELECT distinct fid FROM coin WHERE uid = 59  )";
$result = mysql_query($query);
while($rows = mysql_fetch_array($result))
{
    $fid = $rows['fid'];
    echo 'fid || '.$fid;
    $result2 = mysql_query( "SELECT id, date_create FROM users WHERE id = $fid");
     $rows2 = mysql_fetch_array($result2);

     echo "  ||   users id : " . $rows2['id']; 

     if( $rows2['date_create'] < "2012-8-31") // How do i get something like this? 
     {

          echo "  ||   date_create : " . $rows2['date_create'] ." True"; 

     }
     else
     {
           echo "  ||   date_create : " . $rows2['date_create'] . "False"; 
     }  
    l();
}

これまでに得た結果は次のようなものです。

fid || 1112 || users id : 1112 || date_create : 2012-08-16 20:13:49 false <--
fid || 1113 || users id : 1113 || date_create : 2012-08-16 20:14:11 false <--
fid || 1115 || users id : 1115 || date_create : 2012-08-16 20:14:21 false <--
fid || 1117 || users id : 1117 || date_create : 2012-08-16 20:14:38 false <--
fid || 1118 || users id : 1118 || date_create : 2012-08-16 20:15:03 false <--
fid || 1119 || users id : 1119 || date_create : 2012-08-16 20:15:10 false <-- 

nbは、時間をチェックする方法も提供していただければ幸いです。これは余分になります:D

4

3 に答える 3

1

次のようなものを使用できます。

$result = mysql_query($query);
$chk = strtotime("2012-08-31");
while( $rows = mysql_fetch_array($result) ) {
    $fid = $rows['fid'];
    echo 'fid || '.$fid;
    $result2 = mysql_query( "SELECT id, date_create FROM users WHERE id = $fid");
     $rows2 = mysql_fetch_array($result2);
     echo "  ||   users id : " . $rows2['id']; 
     if( $chk - strtotime($rows2['date_create']) > 0) {
          echo "  ||   date_create : " . $rows2['date_create'] ." True"; 
     }
     else {
           echo "  ||   date_create : " . $rows2['date_create'] . "False"; 
     }
    l();
}

php.netのドキュメントstrtotime()

于 2012-10-15T03:18:37.353 に答える
1

次のクエリを使用することをお勧めします。

SELECT id, date_create,unix_timestamp(date_create) as time_stamp FROM users WHERE id = $fid"

そして、intであるtime_stamp変数を比較します

于 2012-10-15T03:23:29.703 に答える
1

日付/時刻の文字列を変換し、strtotime()を使用して比較することでそれを行うことができます。この方法を使用すると、数秒間比較するように調整することもできます。

//this effectively checks to see that the time is greater than '2012-08-16 20:13:49'
//the total calculated time on the RHS of the >= operator is effectively '2012-08-16 20:13:49'
//hence, this will echo 'YES'

//this is of the form: hours, minutes, seconds
$time_difference = (44 * 60 * 60) + (13 * 60) + 49;

if (strtotime('2012-08-16 20:13:49') >= strtotime('2012-08-15') + $time_difference)
{
  echo 'YEAH';
}
else
{
  echo 'NO';
}

アップデート:

strtotime()に関するPHPドキュメントから:

タイムスタンプの有効な範囲は、通常、1901年12月13日金曜日20:45:54UTCから2038年1月19日火曜日03:14:07UTCまでです。(これらは、32ビット符号付き整数の最小値と最大値に対応する日付です。)さらに、すべてのプラットフォームが負のタイムスタンプをサポートしているわけではないため、日付範囲はUnixエポックより前に制限される場合があります。これは、たとえば1970年1月1日より前の日付は、Windows、一部のLinuxディストリビューション、およびその他のいくつかのオペレーティングシステムでは機能しないことを意味します。ただし、PHP 5.1.0以降のバージョンでは、この制限が克服されています。

PHPの64ビットバージョンの場合、タイムスタンプの有効範囲は事実上無限です。64ビットはどちらの方向でも約2930億年を表すことができるからです。

于 2012-10-15T03:26:54.470 に答える