0

タイムスタンプ フィールドもあるデータでいっぱいのデータベースがあります。私がやろうとしているのは、タイムスタンプでグループ化されたフィールドのレコード数を数えることですが、日数に丸められます。

私は現在、以下のようなコードを持っています。

$days_ago7a = date('Y-m-d', mktime(0, 0, 0, date("m") , date("d") - 7, date("Y")));
$result = mysql_query("SELECT * FROM all_count WHERE date='$days_ago7a'");
$num_rows37 = mysql_num_rows($result);

同じことをしたいのは、日付をタイムスタンプ (データベースにもある) に置き換えるだけで、24 時間以内のすべてのタイムスタンプをグループ化することです。

それは可能ですか?

OK、コードをこれに変更しましたが、結果が返されませんか?

$result = mysql_query("select date( timestamp ), count(*) from all_count group by date(   timestamp );") 
 or die(mysql_error());  
  while($row = mysql_fetch_array( $result )) { 
  echo "$timestamp";
  }
4

3 に答える 3

2

タイムスタンプの日付でグループ化するには:

select date( timestampfield ), count(*) from all_count group by date( timestampfield );

昨日からのカウントを取得するには:

select count(*) from all_count where date(timestampfield) = date_sub( curdate(), INTERVAL 1 day );
于 2013-03-14T13:45:20.123 に答える
0

MySQLの日付が役に立ちます!

TO_DAYS(date)日付を指定すると、日数(0年からの日数)を返します。

mysql> SELECT TO_DAYS(950501);
    -> 728779
mysql> SELECT TO_DAYS('2007-10-07');
    -> 733321

私はあなたが残りを理解できると思います。

于 2013-03-14T14:02:42.877 に答える
0

タイムスタンプを日付(時刻ではなく)の範囲でのみ使用する簡単な方法は、次のようにすることだと思います。

$date = '2012-05-20 11:25:12';
$date = strtotime($date);
$begginingOfDay = date('Y', $date).'-'.date('m', $date).'-'.date('d', $date).' 00:00:00'
$timestamp = strtotime($begginingOfDay);

これ$timestampで、その日の開始のタイムスタンプが含まれています。次に、それを使って移動できます。たとえば、数日減算します。

//timestamp points to 2012-05-20 00:00:00
$timestampWeekBefore = $timestamp - 7 * 24 * 60 * 60; //date - 7 days * 24 hours * 60 minutes * 60 seconds

あなたに与えるでしょう2012-05-14 00:00:00。操作後、適切な形式で呼び出しdateて、ページまたはクエリに配置できます。

于 2013-03-14T13:56:42.833 に答える