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

MySQLで月末日を取得する方法|LAST_DAY()関数の使い方を解説

MySQLでは、LAST_DAY() 関数を使うことで、日付データからその月の最終日(月末日)を簡単に取得できます。テーブル内のすべての日付レコードに対して、それぞれの月末日を一括で求めたい場合に非常に便利です。

LAST_DAY()関数の基本構文

SELECT LAST_DAY(カラム名) FROM テーブル名;

LAST_DAY() 関数は、引数として渡された日付が属する月の最終日を DATE 型で返します。うるう年や月ごとの日数の違い(28日・29日・30日・31日)も自動的に判定してくれるため、自前で計算する必要はありません。

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

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

テストデータの挿入

次に、INSERT文を使っていくつかのレコードを挿入します。

mysql> insert into DemoTable values('2019-01-12');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('2019-02-01');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('2019-03-04');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('2019-04-21');
Query OK, 1 row affected (0.14 sec)

登録データの確認

SELECT文ですべてのレコードを表示してみます。

mysql> select *from DemoTable;

出力結果

+--------------+
| ShippingDate |
+--------------+
| 2019-01-12   |
| 2019-02-01   |
| 2019-03-04   |
| 2019-04-21   |
+--------------+
4 rows in set (0.00 sec)

各月の最終日を取得するクエリ

それでは、LAST_DAY() 関数を使って、テーブル内の全レコードの月末日を取得してみましょう。

mysql> select LAST_DAY(ShippingDate) from DemoTable;

出力結果

+------------------------+
| LAST_DAY(ShippingDate) |
+------------------------+
| 2019-01-31             |
| 2019-02-28             |
| 2019-03-31             |
| 2019-04-30             |
+------------------------+
4 rows in set (0.00 sec)

このように、1月は「31日」、2月は「28日」、3月は「31日」、4月は「30日」と、それぞれの月に応じた正しい最終日が返されていることがわかります。

応用例:現在の月末日を取得する

CURDATE() 関数と組み合わせれば、今日の日付が属する月の最終日も取得できます。

mysql> SELECT LAST_DAY(CURDATE());

また、請求処理や締め日の計算など、「月末基準」で処理を行いたい業務システムにおいても、LAST_DAY() は頻繁に活用される実用的な関数です。ぜひ活用してみてください。

  1. JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法

    MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI

  2. MySQLで最初と最後の行を除外して、それ以外のすべての行を取得する方法

    MySQLで最初と最後の行を除外して、それ以外のすべての行を取得する方法MySQLでテーブルの最初と最後の行を除外し、それ以外のすべての行を取得するには、サブクエリとMIN()関数・MAX()関数を組み合わせて使用します。この記事では、実際のサンプルコードを使いながら手順をわかりやすく解説します。サンプルテーブルの作成まず、以下のSQL文を実行してテーブルを作成します。mysql> create table DemoTable1917 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentCode