MySQLで特定の日付のレコードを抽出するクエリの書き方
MySQLで特定の日付のレコードを抽出するには
MySQLのDATE()関数を使用すると、DATETIME型のカラムから日付部分だけを取り出し、特定の日付のレコードを抽出することができます。基本の構文は以下のとおりです。
SELECT *FROM yourTableName WHERE DATE(yourDateColumnName)='anyDate';
DATE()関数は日時の値から時刻情報を取り除き、日付部分のみを返します。そのため、時刻が異なるレコードでも同じ日付であればまとめて抽出できるのがポイントです。
サンプルテーブルの作成
上記の構文を理解するために、まずテーブルを作成しましょう。テーブルを作成するクエリは以下のとおりです。
mysql> create table AllRecordsFromadate
-> (
-> Id int,
-> Name varchar(100),
-> Age int,
-> AdmissionDate datetime
-> );
Query OK, 0 rows affected (0.53 sec)
レコードの挿入
次に、insertコマンドを使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into AllRecordsFromadate values(101,'John',23,'2018-10-13');
Query OK, 1 row affected (0.18 sec)
mysql> insert into AllRecordsFromadate values(102,'Carol',24,'2014-12-5 12:34:50');
Query OK, 1 row affected (0.18 sec)
mysql> insert into AllRecordsFromadate values(103,'Mike',25,'2014-12-5 12:30:40');
Query OK, 1 row affected (0.23 sec)
mysql> insert into AllRecordsFromadate values(104,'Bob',24,'2015-10-7 11:10:20');
Query OK, 1 row affected (0.20 sec)
mysql> insert into AllRecordsFromadate values(105,'Sam',25,'2011-6-26 10:10:20');
Query OK, 1 row affected (0.11 sec)
テーブルの全レコードを確認する
selectコマンドで、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from AllRecordsFromadate;
以下が出力結果です。
+------+-------+------+---------------------+
| Id | Name | Age | AdmissionDate |
+------+-------+------+---------------------+
| 101 | John | 23 | 2018-10-13 00:00:00 |
| 102 | Carol | 24 | 2014-12-05 12:34:50 |
| 103 | Mike | 25 | 2014-12-05 12:30:40 |
| 104 | Bob | 24 | 2015-10-07 11:10:20 |
| 105 | Sam | 25 | 2011-06-26 10:10:20 |
+------+-------+------+---------------------+
5 rows in set (0.00 sec)
特定の日付のレコードだけを抽出する
それでは、実際に特定の日付でレコードを絞り込んでみましょう。たとえば「2014年12月5日」のレコードだけを取得したい場合は、以下のようにクエリを記述します。
mysql> select *from AllRecordsFromadate WHERE DATE(AdmissionDate)='2014-12-5';
このクエリでは、DATETIME型のAdmissionDateカラムにDATE()関数を適用することで、時刻情報を無視して日付部分のみを比較しています。そのため、時刻は異なるものの同じ日付である「Carol」と「Mike」のレコードが両方とも抽出されます。
+------+-------+------+---------------------+
| Id | Name | Age | AdmissionDate |
+------+-------+------+---------------------+
| 102 | Carol | 24 | 2014-12-05 12:34:50 |
| 103 | Mike | 25 | 2014-12-05 12:30:40 |
+------+-------+------+---------------------+
2 rows in set (0.00 sec)
このように、DATE()関数をWHERE句で活用すれば、DATETIME型のカラムを持つテーブルからでも、特定の日付に該当するレコードを簡単に取得できます。
-
MySQLで当日の00:00から現在時刻までのレコードを抽出するクエリの書き方
はじめにMySQLで「今日の日付の午前0時(00:00)から現在時刻まで」のレコードを取得したいケースはよくあります。例えば、現在の日時が 2019-09-14 08:50:10 である場合、2019-09-14 00:00:00 から 2019-09-14 08:50:10 までの範囲にあるレコードを抽出することになります。本記事では、実際にテーブルを作成し、データを挿入しながら、この条件を実現するクエリを具体的に解説します。サンプルテーブルの作成まず、DATETIME型のカラムを持つテーブルを作成します。mysql> create table DemoTable( &nbs
-
MySQLでSELECTクエリを使用してデータを挿入(INSERT)する方法
MySQLでは、INSERT文とSELECTクエリを組み合わせることで、テーブルにデータを挿入することができます。通常、SELECTは既存のテーブルからデータを取得するために使われますが、値を直接指定してINSERTを実行する際にも活用できる便利な手法です。基本構文SELECTクエリを使用してINSERTを実行する場合の構文は以下の通りです。insert into yourTableName(yourColumnName1,yourColumnName2,yourColumnName3,...N) select yourValue1,yourValue2,yourValue3,......N;