ホームページ >バックエンド開発 >PHPチュートリアル >PHP は期間に基づいて毎日のデータをクエリします
次に、指定された日付内の毎日のデータをクエリする必要があります。何か良い方法はありますか?
まず、データベースには日付を保存するフィールドが必要で、その後、統計を日付ごとにグループ化します。
まず、データベースには日付を保存するフィールドが必要で、統計を日付ごとにグループ化します。
タイムスタンプのグループ化は、最初に日付変換関数を使用して日付に変換してからグループ化する方が面倒ですが、これは設計中に日付フィールドを追加するのが最善です。
まだよく理解できていないので詳しく説明してもらえますか?
たとえば、タイムスタンプを保存するフィールドが t の場合、次のようにデータをカウントできます
SELECT COUNT(*) AS n,FROM_UNIXTIME(`t`,'%y)。 -$m-%d' ) AS d FROM `tb` GROUP BY d ORDER BY d
ただし、この効率は非常に低く、挿入時に日付を計算するのが最善です。
こんにちは、「日付を挿入するときに計算されます」 「データベースがデータを保存するときに、2015-10-08 などの形式で保存される日付を指します。
現在取得しているのは、期間の開始時刻と終了時刻です。まずこの期間を日ごとに配列に保存してから、その日のデータに対して「毎日」クエリを実行する必要がありますか?
こんにちは、「挿入時に日付を計算する」とは、データベースがデータを保存するときに、2015-10-08 のような形式で保存されることを意味しますか?
現在取得しているのは、期間の開始時刻と終了時刻です。まずこの期間を日ごとに配列に保存してから、その日のデータに対して「毎日」クエリを実行する必要がありますか?
<?php ///$ary为该时间区间下所有的数据foreach($ary as $k=>$v){ $datas['day_'.date('md',$v['timestamp'])][]=$v;//分组 }var_dump($datas['day_0809'])//为8月9号那天所有数据;?>
こんにちは、「挿入時に日付を計算する」とは、データベースがデータを保存するときに、2015-10-08 のような形式で日付を保存することを意味しますか?
現在取得しているのは、期間の開始時刻と終了時刻です。まずこの期間を日ごとに配列に保存してから、その日のデータに対して「毎日」クエリを実行する必要がありますか?
rreee
タイムスタンプにはデータ統合に php を使用できます
こんにちは、私もそう思います。タイムスタンプと日付の形式を使用するのがより適切な場合は、よくわかりました。
PHP データ統合は少量のデータに適しています。100 万個のデータがある場合、どれくらいのメモリと帯域幅を消費しますか? 1億はどうでしょうか?
リソースの消費を最小限に抑えるために何ができるでしょうか?
select *,from_unixtime(addtime, '%Y%m%d') as d from table where from_unixtime(addtime,'%Y%m%d')>=20150101 and from_unixtime( addtime,'%Y %m%d')<=20150201;
$d1 = strtotime('2015-01-01');
$d2 = strtotime('2015-02-01');
$sql = "select * from tbl_name where field between $d1 and $d2"
查询时没有了格式转换,自然效率要高很多
数据库存时间戳就挺好的 不用改 你查询的条件 可以把给的制定日期变成时间戳再去查库啊
多谢各位的回答,不但解决了我的问题还让我学到了更多的知识,非常感谢!!!
数据库存时间戳就挺好的 不用改 你查询的条件 可以把给的制定日期变成时间戳再去查库啊
这没有什么
select 时间戳, sum(数量) from 表 group by floor(时间戳/86400)
这没有什么
select 时间戳, sum(数量) from 表 group by floor(时间戳/86400)