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

MySQLで各月の初日(月初)を取得する方法をわかりやすく解説

MySQLでは、DATE_FORMAT() 関数を使用することで、datetime型のカラムから対応する各月の初日を簡単に抽出できます。フォーマット指定子に %Y-%m-01 を指定することで、年と月はそのままに、日付部分を「01」に固定した文字列を取得できます。

基本構文

SELECT DATE_FORMAT(yourDatetimeColumnName, '%Y-%m-01') AS anyVariableName
FROM yourTableName;

実際に試してみよう

1. テーブルを作成する

まず、動作を確認するためのサンプルテーブルを作成します。

mysql> CREATE TABLE getFirstDayOfMonth
-> (
-> DueDatetime datetime
-> );
Query OK, 0 rows affected (1.16 sec)

2. テストデータを挿入する

DATE_ADD() 関数を使って、現在日時から相対的な日付を持つレコードを複数挿入します。

mysql> INSERT INTO getFirstDayOfMonth VALUES(DATE_ADD(NOW(), INTERVAL 3 MONTH));
Query OK, 1 row affected (0.30 sec)

mysql> INSERT INTO getFirstDayOfMonth VALUES(DATE_ADD(NOW(), INTERVAL -3 MONTH));
Query OK, 1 row affected (0.13 sec)

mysql> INSERT INTO getFirstDayOfMonth VALUES(DATE_ADD(NOW(), INTERVAL -2 MONTH));
Query OK, 1 row affected (0.18 sec)

mysql> INSERT INTO getFirstDayOfMonth VALUES(DATE_ADD(NOW(), INTERVAL -1 MONTH));
Query OK, 1 row affected (0.16 sec)

mysql> INSERT INTO getFirstDayOfMonth VALUES(DATE_ADD(NOW(), INTERVAL -4 MONTH));
Query OK, 1 row affected (0.10 sec)

3. 挿入されたデータを確認する

mysql> SELECT * FROM getFirstDayOfMonth;

出力結果

+---------------------+
| DueDatetime |
+---------------------+
| 2019-03-20 12:32:06 |
| 2018-09-20 12:32:16 |
| 2018-10-20 12:32:22 |
| 2018-11-20 12:32:28 |
| 2018-08-20 12:32:33 |
+---------------------+
5 rows in set (0.00 sec)

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

それでは、カラムに格納されている日付がどの月であっても、その月の初日を返すクエリを実行してみましょう。

mysql> SELECT DATE_FORMAT(DueDatetime, '%Y-%m-01') AS DateDemo
-> FROM getFirstDayOfMonth;

出力結果

+------------+
| DateDemo |
+------------+
| 2019-03-01 |
| 2018-09-01 |
| 2018-10-01 |
| 2018-11-01 |
| 2018-08-01 |
+------------+
5 rows in set (0.00 sec)

補足:別のアプローチ

DATE_FORMAT() 以外にも、MySQLには月の初日を取得する方法がいくつかあります。例えば、次のように DATE_SUB()DAYOFMONTH() を組み合わせる方法もあります。

SELECT DATE_SUB(DueDatetime, INTERVAL DAYOFMONTH(DueDatetime) - 1 DAY) AS FirstDay
FROM getFirstDayOfMonth;

この方法では、日付から「その日の日にち − 1」分だけ差し引くことで、同じ月の1日を算出しています。DATE_FORMAT() の方がシンプルで可読性も高いため、通常はこちらの利用をおすすめします。

  1. PHPで週の最初の日(週初め)を取得する方法

    PHPで現在の週の最初の日を取得したい場合、date() 関数と strtotime() 関数を組み合わせることで簡単に実現できます。以下に具体的なコード例を紹介します。例1:今週の最初の日を取得する<?php $res = date(l - d/m/Y, strtotime(this week)); echo First day = , $res; ?>出力結果上記のコードを実行すると、次のような出力が得られます。First day = Monday - 09/12/2019解説strtotime(this week) は、現在の週の開始日時を表すタイムスタンプを

  2. Pythonで月の最終日を取得する方法【calendarモジュールの使い方】

    Pythonでは、標準ライブラリのcalendarモジュールを使うことで、指定した月の最終日(末日)を簡単に取得できます。calendarモジュールにはmonthrange(year, month)という便利なメソッドが用意されており、指定した年・月の「1日の曜日」と「その月の日数」をタプルで返します。この情報を組み合わせれば、月の最終日の日付や曜日を自在に求めることが可能です。 monthrange()メソッドの基本 calendar.monthrange(year, month)は、以下の2つの値を返します。 第1戻り値:その月の1日の曜日(0が日曜日、6が土曜日) 第2戻り値:その月の