MySQLで特定の年の開始日と終了日を取得する方法
MySQLで特定の年に該当するレコードの開始日(StartDate)と終了日(EndDate)を抽出するには、YEAR()関数を使用します。この関数は日付から「年」の部分だけを取り出すことができるため、年の条件での絞り込みに便利です。
ここでは、実際にテーブルを作成し、サンプルデータを登録して、特定の年でレコードを検索する手順を順番に解説します。
1. サンプルテーブルを作成する
まず、開始日と終了日を格納するためのテーブルを作成します。
mysql> create table DemoTable1843
(
StartDate date,
EndDate date
);
Query OK, 0 rows affected (0.00 sec)DemoTable1843というテーブルに、StartDate(開始日)とEndDate(終了日)という2つのDATE型カラムを定義しました。
2. テーブルにレコードを挿入する
次に、INSERT文を使ってサンプルデータをいくつか登録します。
mysql> insert into DemoTable1843 values('2019-01-21','2019-10-12');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1843 values('2018-10-12','2018-12-31');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1843 values('2016-04-01','2017-05-02');
Query OK, 1 row affected (0.00 sec)3件のレコードを登録できました。それぞれ異なる年の日付が含まれている点に注目してください。
3. 登録したレコードを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select * from DemoTable1843;
実行結果は以下の通りです。
+------------+------------+ | StartDate | EndDate | +------------+------------+ | 2019-01-21 | 2019-10-12 | | 2018-10-12 | 2018-12-31 | | 2016-04-01 | 2017-05-02 | +------------+------------+ 3 rows in set (0.00 sec)
4. 特定の年で開始日・終了日を抽出する
ここが本題です。指定した年(この例では2018年)に関連するレコードを取得するには、WHERE句の中でYEAR()関数を使い、StartDateまたはEndDateのいずれかがその年に一致するかどうかを判定します。
mysql> select * from DemoTable1843
where year(StartDate)='2018'
or
year(EndDate)='2018';実行すると、次のような出力が得られます。
+------------+------------+ | StartDate | EndDate | +------------+------------+ | 2018-10-12 | 2018-12-31 | +------------+------------+ 1 row in set (0.00 sec)
クエリのポイント
上記のクエリでは、year(StartDate)='2018' または year(EndDate)='2018' という条件をORでつないでいます。これにより、「開始日が2018年のレコード」と「終了日が2018年のレコード」の両方を漏れなく取得できます。
たとえば、ある期間が年をまたいでいる場合(2017年12月〜2018年1月など)でも、OR条件を使うことで取りこぼしを防げます。逆に、開始日と終了日の両方が同じ年であるレコードだけを厳密に取得したい場合は、ANDに変更すれば対応可能です。
YEAR()関数はMySQL 8.0や5.7などの主要なバージョンで利用できる標準的な関数なので、実務のデータ抽出やレポート作成にも安心して活用できます。
-
MySQLでテーブルから特定の行を抽出するクエリの書き方
MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),
-
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()メソッドは、年、月、日を引数として受け取り、その