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

【MySQL】タイムスタンプの一部(年)を条件にレコードを抽出する方法

MySQLでは、YEAR()などの日付関数を使うことで、TIMESTAMP型のカラムから「年」や「月」といった日時の一部を条件にレコードを抽出できます。この記事では、テーブル作成からデータ抽出までの具体的な手順を解説します。

1. テーブルを作成する

まず、TIMESTAMP型のカラムを持つテーブルを作成しましょう。

mysql> create table DemoTable
(
    AdmissionDate timestamp
);
Query OK, 0 rows affected (0.90 sec)

2. サンプルデータを挿入する

続いて、INSERTコマンドで複数のレコードを登録します。

mysql> insert into DemoTable values('2007-01-10');
Query OK, 1 row affected (0.34 sec)
mysql> insert into DemoTable values('2015-07-12');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('2017-11-01');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('2019-08-29');
Query OK, 1 row affected (0.08 sec)

3. 登録したレコードを確認する

SELECT文でテーブル内の全レコードを表示してみます。

mysql> select *from DemoTable;

実行結果は以下の通りです。なお、日付のみを指定して挿入した場合、時刻部分は自動的に「00:00:00」として保存されます。

+---------------------+
| AdmissionDate       |
+---------------------+
| 2007-01-10 00:00:00 |
| 2015-07-12 00:00:00 |
| 2017-11-01 00:00:00 |
| 2019-08-29 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)

4. タイムスタンプの一部(年)を条件に抽出する

タイムスタンプの一部を基準にレコードを取得するには、WHERE句の中でYEAR()関数を使用します。以下の例では、「AdmissionDate」が2017年のレコードだけを抽出しています。

mysql> select *from DemoTable where year(AdmissionDate)='2017';

実行結果:

+---------------------+
| AdmissionDate       |
+---------------------+
| 2017-11-01 00:00:00 |
+---------------------+
1 row in set (0.23 sec)

補足:月や日単位での抽出も可能

YEAR()と同様に、MONTH()関数やDAY()関数を組み合わせれば、月単位・日単位での絞り込みも簡単に行えます。例えば、11月のレコードだけを取得したい場合は、次のように記述します。

mysql> select *from DemoTable where month(AdmissionDate)='11';

このように日付関数を活用することで、TIMESTAMP型のデータから柔軟に目的のレコードを取り出すことができます。

  1. MySQLで月ごとにテーブルの合計値を集計する方法

    MySQLで日付データを月単位にグループ化して合計値を求めたい場合、GROUP BY句とMONTH()関数を組み合わせることで簡単に実現できます。この記事では、実際のサンプルを使いながら手順を詳しく解説します。1. サンプルテーブルの作成まず、購入日と金額を格納するテーブルを作成します。mysql> create table DemoTable1628 -> ( -> PurchaseDate date, -> Amount int -> ); Query OK, 0 rows affected (1.55 sec)2. テストデー

  2. MySQLで条件に基づいてテーブルから一部の行のみを削除する方法

    MySQLで条件に基づいてテーブルから一部の行のみを削除する方法MySQLでは、DELETE文とWHERE句を組み合わせることで、テーブルから条件に合致する行だけを選択的に削除できます。WHERE句を指定しないとテーブル内のすべての行が削除されてしまうため、条件の指定は非常に重要です。ここでは、実際の例を使って手順を解説します。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> );Query O