MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLですべての日付レコードに対する直近の日曜日の日付を取得する方法

MySQLで次の日曜日の日付を取得する方法

MySQLでは、WEEKDAY()関数とINTERVALを組み合わせることで、テーブル内のすべての日付レコードに対して、その直後に訪れる日曜日の日付を簡単に計算できます。ここでは、具体的な手順をサンプルコードとともに解説します。

1. テーブルの作成

まず、日付を格納するためのテーブルを作成します。

mysql> create table DemoTable(GetSundayDate date);
Query OK, 0 rows affected (0.44 sec)

2. レコードの挿入

INSERTコマンドを使用して、テーブルにいくつかの日付レコードを挿入します。

mysql> insert into DemoTable values('2019-08-07');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('2018-09-05');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('2019-09-12');
Query OK, 1 row affected (0.17 sec)

3. レコードの確認

SELECT文を使用して、テーブル内のすべてのレコードを表示します。

mysql> select *from DemoTable;

これにより、以下の出力が得られます。

+---------------+
| GetSundayDate |
+---------------+
| 2019-08-07    |
| 2018-09-05    |
| 2019-09-12    |
+---------------+
3 rows in set (0.00 sec)

4. 直近の日曜日の日付を取得するクエリ

以下のクエリを実行すると、列内のすべての日付に対して、その直後の日曜日の日付を取得できます。

mysql> SELECT date(GetSundayDate + INTERVAL 6 - weekday(GetSundayDate) DAY) AS ComingSundayDate from DemoTable;

実行結果は以下のとおりです。

+------------------+
| ComingSundayDate |
+------------------+
| 2019-08-11       |
| 2018-09-09       |
| 2019-09-15       |
+------------------+
3 rows in set (0.00 sec)

クエリの仕組み

このクエリのポイントは、WEEKDAY()関数の動作です。MySQLのWEEKDAY()関数は、月曜日を「0」、日曜日を「6」として曜日を数値で返します。したがって、6 - WEEKDAY(日付)を計算することで、その日付から次の日曜日までの日数が求められます。この日数をINTERVAL ... DAYで元の日付に加算し、DATE()関数で日付型に変換することで、各レコードに対応する直近の日曜日の日付を正確に取得できるのです。

  1. MySQLで日付データから月の初日と末日を取得する方法

    MySQLでは、日付型のカラムから「その月の最初の日」と「最後の日」を簡単に求めることができます。この記事では、実際にテーブルを作成し、サンプルデータを使いながら具体的な手順を解説します。1. テーブルの作成まず、日付を格納するためのテーブルを作成します。mysql> create table DemoTable -> ( -> DueDate date -> ); Query OK, 0 rows affected (0.73 sec)2. レコードの挿入次に、INSERT文を使ってテーブルにいくつかのレコードを挿入します。mysql>

  2. MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方

    MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ