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

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()を使う方法がおすすめです。


  1. 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

  2. MySQLでテーブルの最後の10件のレコードを取得する方法

    MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected