MySQL初心者でも安心!今日と過去30日間のレコードを取得する3つの方法を徹底解説
MySQLクエリ: 今日と過去30日間のレコードを取得する
使用する関数
DATE_SUB()
: 指定された日付から指定された間隔を引く関数CURDATE()
: 現在の日付を返す関数SELECT
: 特定の列からデータを抽出するクエリ
クエリ構造
SELECT * FROM your_table
WHERE your_date_column BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND CURDATE();
説明:
SELECT * FROM your_table
: この部分は、your_table
テーブルからすべての列を取得することを示します。WHERE
: この部分は、条件に一致するレコードのみを抽出することを示します。your_date_column
: これは、日付情報を含むテーブル内の列の名前です。BETWEEN
: この演算子は、列の値が指定された範囲内にあるかどうかを確認します。DATE_SUB(CURDATE(), INTERVAL 30 DAY)
: この部分は、現在の日付から30日前の日付を計算します。AND
: この論理演算子は、2つの条件を結合します。CURDATE()
: この部分は、現在の日付を取得します。
例
SELECT * FROM orders
WHERE order_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND CURDATE();
このクエリは、orders
テーブルから、過去30日間に注文されたすべての注文を取得します。
注意点
- 上記のクエリは、
your_date_column
列がDATE
またはDATETIME
データ型であることを前提としています。 - クエリを実行する前に、テーブル名と列名を正しいものに置き換えてください。
- 必要に応じて、
SELECT
句で取得する列を指定できます。
SELECT order_id, customer_name, order_date, order_total
FROM orders
WHERE order_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND CURDATE();
- このクエリは、
orders
テーブルからorder_id
、customer_name
、order_date
、order_total
列を取得します。 WHERE
句は、order_date
列の値が過去30日間の範囲内であるレコードのみを抽出するように条件を指定します。
実行方法:
- MySQL に接続します。
- 上記のクエリを貼り付けて実行します。
- 結果として、過去30日間に注文されたすべての注文が表示されます。
補足:
- 上記のクエリはあくまで例であり、必要に応じて列名や条件を変更できます。
- データベースやテーブル名に変更がある場合は、コードを修正する必要があります。
MySQLで今日と過去30日間のレコードを取得するその他の方法
方法1:>= と <= 演算子を使用する
SELECT * FROM your_table
WHERE your_date_column >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
AND your_date_column <= CURDATE();
このクエリは、>=
と <=
演算子を使用して、your_date_column
列の値が過去30日間の範囲内であるかどうかを確認します。
SELECT * FROM your_table
WHERE your_date_column BETWEEN '2024-06-09' AND '2024-07-09';
このクエリは、BETWEEN
演算子と文字列リテラルを使用して、your_date_column
列の値が指定された日付範囲内であるかどうかを確認します。この方法を使用するには、開始日と終了日を明示的に指定する必要があります。
DATE_SUB()
関数を使用する方法: 柔軟性があり、過去30日以外の期間を簡単に指定できます。>=
と<=
演算子を使用する方法: シンプルでわかりやすい構文です。BETWEEN
演算子と文字列リテラルを使用する方法: 特定の日付範囲を指定する必要がある場合に適しています。
mysql date select