MySQLで前月の最終日を取得する方法【LAST_DAY関数の使い方】
MySQLで前月の最終日を取得する方法
MySQLでは、LAST_DAY()関数とINTERVALを組み合わせることで、前月の最終日を簡単に取得できます。月末は28日〜31日まで変動しますが、この方法を使えば閏年や月の長さを意識することなく、常に正確な日付を得られます。
基本となるクエリ
以下のSQLクエリを実行すると、前月の最終日を取得できます。
mysql> SELECT LAST_DAY(now() - INTERVAL 1 MONTH) AS 'LAST DAY OF PREVIOUS MONTH'; +----------------------------+ | LAST DAY OF PREVIOUS MONTH | +----------------------------+ | 2017-09-30 | +----------------------------+ 1 row in set (0.00 sec)
クエリの仕組み
このクエリがどのように動作しているのか、内側から順番に見ていきましょう。
- now():現在の日時を返します。
- - INTERVAL 1 MONTH:その日時から1か月前の日付へ移動します。
- LAST_DAY():指定した日付が属する月の最終日を返します。
つまり、このクエリは「現在の日時から1か月戻した日付が属する月の、その月の最終日」を計算していることになります。
別の書き方
DATE_SUB()関数を使っても、まったく同じ結果を得られます。
mysql> SELECT LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AS '前月の最終日';
また、「当月1日の前日」という考え方で取得する方法もあります。
mysql> SELECT DATE_FORMAT(CURDATE(), '%Y-%m-01') - INTERVAL 1 DAY AS '前月の最終日';
実務での活用例
前月の最終日は、月次レポートの集計期間の終了日指定や、給与・請求の締め日処理など、さまざまな場面で活用されます。手動で「30日」や「31日」をハードコードしてしまうと、2月や小の月で誤った結果になる恐れがありますが、LAST_DAY()関数を使えばそうしたミスを防げます。
-
MySQLで日付データから月の初日と末日を取得する方法
MySQLでは、日付型のカラムから「その月の最初の日」と「最後の日」を簡単に求めることができます。この記事では、実際にテーブルを作成し、サンプルデータを使いながら具体的な手順を解説します。1. テーブルの作成まず、日付を格納するためのテーブルを作成します。mysql> create table DemoTable -> ( -> DueDate date -> ); Query OK, 0 rows affected (0.73 sec)2. レコードの挿入次に、INSERT文を使ってテーブルにいくつかのレコードを挿入します。mysql>
-
Pythonで月の最終日を取得する方法【calendarモジュールの使い方】
Pythonでは、標準ライブラリのcalendarモジュールを使うことで、指定した月の最終日(末日)を簡単に取得できます。calendarモジュールにはmonthrange(year, month)という便利なメソッドが用意されており、指定した年・月の「1日の曜日」と「その月の日数」をタプルで返します。この情報を組み合わせれば、月の最終日の日付や曜日を自在に求めることが可能です。 monthrange()メソッドの基本 calendar.monthrange(year, month)は、以下の2つの値を返します。 第1戻り値:その月の1日の曜日(0が日曜日、6が土曜日) 第2戻り値:その月の