私はテーブルを持っています。私は特定の間隔の日付を10個の部分に分割し、mysqlの各部分の数を問い合わせたい
そして、2つのフィールドid
とdatetime
があります。
私がしなければならないことは、任意の2つのdatetimesについて、時間範囲を10等分し、各間隔の行数を与える必要があるということです。
javaやphpのような言語の外部サポートを使用せずにこれが可能かどうか教えてください。
私はテーブルを持っています。私は特定の間隔の日付を10個の部分に分割し、mysqlの各部分の数を問い合わせたい
そして、2つのフィールドid
とdatetime
があります。
私がしなければならないことは、任意の2つのdatetimesについて、時間範囲を10等分し、各間隔の行数を与える必要があるということです。
javaやphpのような言語の外部サポートを使用せずにこれが可能かどうか教えてください。
select ((UNIX_TIMESTAMP(date_col)/CAST((time2 - time1)/10) AS INT) + time1), count(id) from my_table where date_col >= time1 AND date_col <= time2 GROUP BY ((UNIX_TIMESTAMP(date_col)/CAST((time2 - time1)/10) AS INT) + time1)
私はそれをテストしていません。しかし、このようなものはうまくいくはずです。
日付間隔を分割する最も簡単な方法は、長時間(つまり、「開始時刻」からのティック数)で保存することです。私が知る限り、MySQLのdatetimeを使用してそれを行う方法はありません。
どのように最終的に決定するかは、アプリケーションによって異なります。私はそれらをlongsとして保存し、より読みやすい形式に変換するために使用しているフロントエンドを持っています。
各区間の行数を正確に指定することはどういう意味ですか?その部分は私には意味をなさない。
私はそれらを長く保管します。次に、私の2つの間隔は1318024876と1318030856です(100分)。だから私は10分間隔でそれらを分割する必要があります。各区間ごとに、その区間に属する行の数が必要です。 – agrawalankur
私が正しいと分かっているなら、あなたはこれを望みます: SELECT count(*)FROMテーブルWHERE datetime> 'time1' AND datetime <'time1' + interval; – Ignacio
しかし、私はそれを各時間間隔で実行しなければならないでしょう。私は答えを見つけた。上記の答えは書き込みです。とにかく助けてくれてありがとう。 – agrawalankur
ちょっとChetan、ありがとう。これはほぼ正しいです。group by節とselect列だけが(UNIX_TIMESTAMP(date_col)-time1)/ CAST((time2-time1)/ 10をINTとして) – agrawalankur