MySQL は過去 30 日間のデータを取得します

Migel Hewage Nimesha 2024年2月15日
  1. データベースへのデータのインポート
  2. システム関数 now() を使用して、MySQL で過去 30 日間のデータを取得する
  3. current_date() を使用して、MySQL で過去 30 日間のデータを取得する
  4. システム関数 date_sub() を使用して、MySQL で過去 30 日間のデータを取得する
  5. between コマンドを使用して、MySQL で過去 30 日間のデータを取得する
  6. まとめ
MySQL は過去 30 日間のデータを取得します

この記事では、SQL クエリを使用してデータベースから過去 30 日間のデータ レコードを取得する方法について説明します。

データベースへのデータのインポート

まず、SQL クエリを使用してサンプル データをデータベースにインポートします。 データセットをインポートする前に、データベースの下にテーブルを作成する必要があります。

SQL クエリ:

create table sales(order_date date, sale int);

上記の構文は、order_datesale の 2つの列を持つ sales テーブルを作成します。 order_datesale の型は、それぞれ dateint です。

次に、手入力でテーブルにデータをインポートしましょう。

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);

出力:

MySQL Get Last 30 Days Data - Import Data

データをインポートした後、要件に従ってデータを抽出できるようになりました。

この記事では、データベースから過去 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 日間隔の後に該当するレコードを選択できます。

出力:

MySQL は過去 30 日間のデータを取得 - 出力 1

システム関数 now() は最新の DateTime 値を取得し、interval 句は 30 日前の日付を計算します。

interval 句の構文は次のとおりです。

interval expr unit
  1. expr - 数量
  2. unit - 解釈された量の単位 (例: HOUR、DAY、または WEEK)
  3. interval - キーワードと単位指定子

これらは大文字と小文字を区別せず、interval+ または - 演算子と組み合わせて式で実行できます。

current_date() を使用して、MySQL で過去 30 日間のデータを取得する

now() の代わりに current_date() を使用できます。 以下は、それをどのように使用するかに関する SQL クエリです。

SQL クエリ:

select * from sales
where order_date > current_date - interval 30 day;

出力:

MySQL は過去 30 日間のデータを取得 - 出力 2

このクエリでは、プロセスは上記の SQL クエリと同じです。ここでは、now()current_date() に置き換えています。

システム関数 date_sub() を使用して、MySQL で過去 30 日間のデータを取得する

以下の SQL クエリを使用すると、30 日間のレコードを取得するのにも役立ちます。

SQL クエリ:

select * from sales
where  `order_date` >= date_sub(curdate(), interval 30 day)

出力:

MySQL は過去 30 日間のデータを取得 - 出力 3

上記によると、彼らは上記の方法とは異なる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()

出力:

MySQL は過去 30 日間のデータを取得 - 出力 4

between コマンドを使用すると、将来のレコードを取得することを防止でき、指定された期間の間のレコードを正確に出力します。

ここでは、過去 30 日間から最新日までのレコードを抽出します。 最も早いクエリで、簡単にアクセスして出力を取得できるように日付形式を定義します。

まとめ

全体として、上記の方法を使用して、過去 30 日間の記録と表示を取得できます。 上記の方法を組み合わせて過去 30 日間のデータ レコードを取得する方法は他にもあるかもしれませんが、これらは過去 30 日間のデータ レコードを抽出する最も一般的な方法です。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.

関連記事 - MySQL Date