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

MySQLで特定の日付から月と日を抽出する2つの方法

MySQLでは、日付(DATE型やTIMESTAMP型)の値から「月」や「日」だけを取り出したい場面がよくあります。この記事では、その代表的な2つの方法を、実際のSQL実行例とともにわかりやすく解説します。

方法1:EXTRACT()関数を使う

EXTRACT()関数は、MySQLの日付・時刻値から任意の部分(年、月、日、時、分など)を抽出できる汎用的な関数です。引数に「Month」や「day」などの単位を指定することで、目的の値を簡単に取得できます。

以下は、指定した日付「2017-10-22」から月と日をそれぞれ取得する例です。

mysql> Select EXTRACT(Month from '2017-10-22') AS 'MONTH';
+-------+
| MONTH |
+-------+
| 10 |
+-------+
1 row in set (0.00 sec)

mysql> Select EXTRACT(day from '2017-10-22') AS 'DAY';
+------+
| DAY |
+------+
| 22 |
+------+
1 row in set (0.00 sec)

EXTRACT()関数のメリットは、1つの関数で年・月・日・時間などさまざまな単位に対応できる点です。柔軟に日付の一部を扱いたい場合に便利です。

方法2:MONTH()関数・DAY()関数を使う

もうひとつの方法として、EXTRACT()関数に単位を渡す代わりに、専用のMONTH()関数とDAY()関数を使うこともできます。こちらの方がコードがシンプルになり、意図も直感的に伝わりやすいのが特徴です。

同じ日付「2017-10-22」に対して、それぞれの関数を実行した結果が以下の通りです。

mysql> Select DAY('2017-10-22') AS 'DAY';
+------+
| DAY |
+------+
| 22 |
+------+
1 row in set (0.00 sec)

mysql> Select MONTH('2017-10-22') AS 'MONTH';
+-------+
| MONTH |
+-------+
| 10 |
+-------+
1 row in set (0.00 sec)

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

月や日だけを取得するのであれば、可読性の高いMONTH()関数・DAY()関数の使用がおすすめです。一方、年や時刻など複数の単位を統一的に扱いたい場合や、クエリ内で単位を動的に切り替えたい場合には、EXTRACT()関数が適しています。用途に応じて使い分けるとよいでしょう。

  1. MySQLでテーブルを結合(JOIN)してデータベースから値を取得する方法

    MySQLで複数のテーブルに分けて保存されているデータをまとめて取得したい場合は、JOIN(結合)を使用します。JOINとは、テーブル同士で共通となるキー(カラム)を基準に、複数のテーブルのレコードを関連付けて1つの結果セットとして取得できる仕組みです。本記事では、実際に2つのテーブルを作成し、JOINを使って値をフェッチする手順を具体的なSQL文とともに解説します。 1つ目のテーブル「demo52」を作成する まず、ユーザーのIDと名前を管理するテーブル「demo52」を作成します。「id」にはPRIMARY KEY(主キー)を設定します。 mysql> CREATE TABLE `

  2. Javaで年・月・日から日付を取得する3つの方法(LocalDate、GregorianCalendar、SimpleDateFormat)

    Javaでは、年・月・日の値から日付オブジェクトを作成する方法がいくつかあります。この記事では、代表的な3つの手法——java.time.LocalDateクラスのof()メソッド、java.util.GregorianCalendarクラス、そしてSimpleDateFormatクラス——の使い方を、サンプルコードと実行結果とともにわかりやすく解説します。 1. LocalDateクラスのof()メソッドを使う Java 8以降で導入された日時API(Date-Time API)に含まれるjava.time.LocalDateクラスのof()メソッドは、年、月、日を引数として受け取り、その