MySQL は過去 30 日間のデータを取得します
- データベースへのデータのインポート
-
システム関数
now()
を使用して、MySQL で過去 30 日間のデータを取得する -
current_date()
を使用して、MySQL で過去 30 日間のデータを取得する -
システム関数
date_sub()
を使用して、MySQL で過去 30 日間のデータを取得する -
between
コマンドを使用して、MySQL で過去 30 日間のデータを取得する - まとめ
この記事では、SQL クエリを使用してデータベースから過去 30 日間のデータ レコードを取得する方法について説明します。
データベースへのデータのインポート
まず、SQL クエリを使用してサンプル データをデータベースにインポートします。 データセットをインポートする前に、データベースの下にテーブルを作成する必要があります。
SQL クエリ:
create table sales(order_date date, sale int);
上記の構文は、order_date
と sale
の 2つの列を持つ sales
テーブルを作成します。 order_date
と sale
の型は、それぞれ date
と int
です。
次に、手入力でテーブルにデータをインポートしましょう。
SQL クエリ:
insert into sales(order_date, sale)
values ('2022-09-04',230), ('2022-09-05',200), ('2022-09-06',210), ('2022-09-07',180), ('2022-09-08',220), ('2022-09-09',230), ('2022-09-10',220), ('2022-09-11',225), ('2022-09-12',200), ('2022-09-13',210), ('2022-09-14',190),('2022-09-15',200), ('2022-09-16',220), ('2022-09-17',210), ('2022-09-18',190), ('2022-09-19',180), ('2022-09-20',250), ('2022-09-21',240), ('2022-09-22',245), ('2022-09-23',230), ('2022-09-24',220), ('2022-09-25',210), ('2022-09-26',130), ('2022-09-27',200), ('2022-09-28',210), ('2022-09-29',221), ('2022-09-30',235), ('2022-10-01',237), ('2022-10-02',230), ('2022-10-03',220), ('2022-10-04',210), ('2022-10-05',200), ('2022-10-06',260), ('2022-10-07',270), ('2022-10-08',240), ('2022-10-07',290), ('2022-10-10',230);
出力:
データをインポートした後、要件に従ってデータを抽出できるようになりました。
この記事では、データベースから過去 30 日間のデータを取得する 3つの方法について詳しく説明します。 MySQL には過去 30 日間のレコードを取得する組み込み関数はありませんが、以下の SQL クエリを使用すると取得できます。
システム関数 now()
を使用して、MySQL で過去 30 日間のデータを取得する
sales
テーブルからすべてのレコードを取得したい場合は、sales
テーブルのすべてのレコードを表示するのに役立つ次のクエリを使用できます。
SQL クエリ:
select * from sales
上記の SQL クエリを変更することで、過去 30 日間のレコードを取得できます。
SQL クエリ:
select * from sales
where order_date > now() - interval 30 day;
上記のクエリを使用すると、order_date
が過去 30 日間隔の後に該当するレコードを選択できます。
出力:
システム関数 now()
は最新の DateTime 値を取得し、interval
句は 30 日前の日付を計算します。
interval
句の構文は次のとおりです。
interval expr unit
expr
- 数量unit
- 解釈された量の単位 (例: HOUR、DAY、または WEEK)interval
- キーワードと単位指定子
これらは大文字と小文字を区別せず、interval
を +
または -
演算子と組み合わせて式で実行できます。
current_date()
を使用して、MySQL で過去 30 日間のデータを取得する
now()
の代わりに current_date()
を使用できます。 以下は、それをどのように使用するかに関する SQL クエリです。
SQL クエリ:
select * from sales
where order_date > current_date - interval 30 day;
出力:
このクエリでは、プロセスは上記の SQL クエリと同じです。ここでは、now()
を current_date()
に置き換えています。
システム関数 date_sub()
を使用して、MySQL で過去 30 日間のデータを取得する
以下の SQL クエリを使用すると、30 日間のレコードを取得するのにも役立ちます。
SQL クエリ:
select * from sales
where `order_date` >= date_sub(curdate(), interval 30 day)
出力:
上記によると、彼らは上記の方法とは異なる2つの独自の方法を使用しています。
ここでは、関数 curdate()
を使用して現在の日付を見つけ、date_sub()
を使用して計算された現在の DateTime から 30 日を減算しています。
出力に示されているように、SQL クエリはデータ セットから過去 30 日間のデータを抽出して表示します。
between
コマンドを使用して、MySQL で過去 30 日間のデータを取得する
以下のクエリは、上記のメソッドを組み合わせたものです。 上記の方法とは異なり、ここでは SQL クエリでコマンド BETWEEN
を使用しています。
SQL クエリ:
select date_format(order_date,'%Y/%m/%d') from sales
where order_date between now() - interval 30 day and now()
出力:
between
コマンドを使用すると、将来のレコードを取得することを防止でき、指定された期間の間のレコードを正確に出力します。
ここでは、過去 30 日間から最新日までのレコードを抽出します。 最も早いクエリで、簡単にアクセスして出力を取得できるように日付形式を定義します。
まとめ
全体として、上記の方法を使用して、過去 30 日間の記録と表示を取得できます。 上記の方法を組み合わせて過去 30 日間のデータ レコードを取得する方法は他にもあるかもしれませんが、これらは過去 30 日間のデータ レコードを抽出する最も一般的な方法です。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.