私は自分のウェブサイトに作業グラフを持っていますが、グラフ データは 24 時間の時間枠内で開始および終了しますが、実際にはフレームから開始する必要があります。私のクエリは次のようになります。
select * where timestamp > 24hrs
時間枠内のすべてのデータに加えて、時間枠の前の最初のデータ ポイントを照会するにはどうすればよいですか? 画面外のポイントが 10 時間離れている場合もあれば、10 秒離れている場合もあるため、定数値を使用することはできません。
次の方法で、時間枠の前の最初のデータ ポイントを選択できます。
SELECT * FROM yourtable WHERE timestamp <= 24 ORDER BY timestamp DESC LIMIT 1
同一のタイムスタンプが複数存在する可能性がある場合は、ランダムに 1 つを選択できます。それが受け入れられない場合は、ORDER BY timestamp DESC, primary_key
代わりに使用します。
したがって、次の方法で必要なものを取得できますUNION
。
/* This gets the first item previous to your range limitation */
SELECT
* FROM yourtable
WHERE timestamp <= 24 ORDER BY timestamp DESC LIMIT 1
UNION
/* Your original query */
SELECT
* FROM yourtable
WHERE timestamp > 24;
ここでは(質問に基づいて)タイムスタンプは整数であると想定していますが、DATETIME
列の場合は上記を調整できます。