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

MySQLで今月の最初の日(月初)を取得する方法

MySQLでは、日付関数を組み合わせることで、今月の最初の日(月初の日付)を簡単に取得できます。ここでは、代表的な方法を具体例とともに紹介します。

DATE_SUBとLAST_DAYを組み合わせる方法

LAST_DAY() 関数で今月の最終日を取得し、そこから「その日の日付の数値 − 1」分だけ遡ることで、月初の日付を求めることができます。

mysql> SELECT DATE_SUB(LAST_DAY(NOW()), INTERVAL DAY(LAST_DAY(NOW())) - 1 DAY) AS 'FIRST DAY OF CURRENT MONTH';
+----------------------------+
| FIRST DAY OF CURRENT MONTH |
+----------------------------+
| 2017-10-01                 |
+----------------------------+
1 row in set (0.00 sec)

この方法のポイントは以下の通りです。

  • LAST_DAY(NOW()):現在の日付が属する月の最終日を返す
  • DAY(LAST_DAY(NOW())):その最終日の「日」の部分(例:31日なら31)を数値として取り出す
  • INTERVAL ... - 1 DAY:最終日から「日数 − 1」だけ遡ることで、必ず1日になる

もっとシンプルな方法:DATE_FORMATを使う

実は、DATE_FORMAT() を使えば、より簡潔に月初の日付を取得できます。

mysql> SELECT DATE_FORMAT(NOW(), '%Y-%m-01') AS 'FIRST DAY OF CURRENT MONTH';
+----------------------------+
| FIRST DAY OF CURRENT MONTH |
+----------------------------+
| 2017-10-01                 |
+----------------------------+
1 row in set (0.00 sec)

'%Y-%m-01' というフォーマット指定により、「年」と「月」には現在の値が使われ、「日」は常に「01」に固定されます。ただし、この方法の戻り値は文字列である点に注意してください。

どちらの方法を選ぶべきか?

  • DATE_SUB + LAST_DAY の方法:結果が日付型(DATE)のまま返されるため、他の日付計算や比較処理にそのまま使える
  • DATE_FORMAT の方法:記述がシンプルで読みやすいが、戻り値は文字列になるため、日付型が必要な場面では CAST()STR_TO_DATE() での変換が必要

用途に応じて使い分けるのがおすすめです。日付型として扱いたい場合は前者、表示用の文字列で十分な場合は後者が便利です。

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

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

  2. MySQLで今月のレコードを合計する方法【SUM()とMONTH()関数の使い方】

    MySQLで今月のレコードを合計する方法MySQLで今月のレコードを合計するには、SUM()関数とMONTH()関数を組み合わせて使用します。ここでは、サンプルテーブルを作成し、実際にデータを集計する手順を順番に解説します。1. テーブルを作成するまず、日付と金額を格納するテーブルを作成しましょう。mysql> create table DemoTable1889    (    DueDate date,    Amount int