MySQLで今年の最終日(12月31日)を取得する方法
MySQLで今年の最終日を取得するには
現在の年の最終日を取得したい場合、MySQLのLAST_DAY()関数を使用するのが便利です。LAST_DAY()は、指定した日付が属する月の最終日を返す関数で、これをDATE_ADD()やMONTH()関数と組み合わせることで、今年の12月31日を簡単に求められます。
基本の構文
SELECT LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 12-MONTH(CURDATE()) MONTH));
このクエリの仕組みを分解して見てみましょう。
- CURDATE(): 現在の日付を取得します
- MONTH(CURDATE()): 現在の月を数値として取得します
- 12-MONTH(CURDATE()): 現在の月から12月までの残り月数を計算します
- DATE_ADD(): 現在の日付に残り月数を加算し、12月の同日を作成します
- LAST_DAY(): その月の最終日、つまり12月31日を返します
実行例
それでは、上記の構文を実際に実行して、今年の最終日を確認してみましょう。
mysql> SELECT LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 12-MONTH(CURDATE()) MONTH));
このクエリを実行すると、次のような結果が出力されます。
+-------------------------------------------------------------------+ | LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 12-MONTH(CURDATE()) MONTH)) | +-------------------------------------------------------------------+ | 2019-12-31 | +-------------------------------------------------------------------+ 1 row in set (0.00 sec)
実行した日の年が2019年の場合、「2019-12-31」が返されることが確認できました。この方法なら、どの時期に実行しても自動的にその年の最終日を取得できます。
別の方法:CONCAT()を使うシンプルな書き方
より直感的に書きたい場合は、YEAR()関数とCONCAT()関数を組み合わせて、年末の日付を文字列として直接生成する方法もあります。
SELECT CONCAT(YEAR(CURDATE()), '-12-12') AS last_day_of_year;
※正しくは「'-12-31'」を連結してください。
SELECT CONCAT(YEAR(CURDATE()), '-12-31') AS last_day_of_year;
この書き方は処理がシンプルで読みやすいのが特徴ですが、戻り値が文字列型になる点に注意が必要です。日付型として扱いたい場合は、CAST()やSTR_TO_DATE()で変換するか、冒頭で紹介したLAST_DAY()を使う方法がおすすめです。
-
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 D
-
MySQLでテーブルの最後の10件のレコードを取得する方法
MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected