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

MySQLの日時(datetime)列から空白を無視して日付のみを比較・抽出する方法

MySQLのdatetime型の列から日付だけを抽出して比較したい場合、date()関数trim()関数を組み合わせることで実現できます。trim()を使うことで、比較の際に前後の空白を自動的に取り除くことが可能です。

この記事では、実際にテーブルを作成しながら、その手順をわかりやすく解説します。

1. サンプルテーブルを作成する

まず、datetime型の列を持つテーブルを作成します。

mysql> create table DemoTable661(Duedate datetime);
Query OK, 0 rows affected (0.57 sec)

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

次に、INSERT文を使ってレコードを追加します。ここでは、値の前後に意図的に空白を含ませたデータを挿入している点に注目してください。

mysql> insert into DemoTable661 values(' 2019-01-21 12:02:21');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable661 values(' 2019-07-11 11:55:59 ');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable661 values('2019-11-21 04:00:59 ');
Query OK, 1 row affected (0.10 sec)

3. テーブルの内容を確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable661;

実行結果は以下のとおりです。

+---------------------+
| Duedate |
+---------------------+
| 2019-01-21 12:02:21 |
| 2019-07-11 11:55:59 |
| 2019-11-21 04:00:59 |
+---------------------+
3 rows in set (0.00 sec)

4. datetime列から日付のみを抽出して比較する

ここで本題です。datetime列から日付部分だけを抽出して特定の日付と比較するには、以下のようなクエリを使用します。

mysql> select *from DemoTable661 where trim(date(Duedate))='2019-07-11';

実行結果:

+---------------------+
| Duedate |
+---------------------+
| 2019-07-11 11:55:59 |
+---------------------+
1 row in set (0.00 sec)

ポイント解説

このクエリが機能する仕組みを簡単に整理します。

date()関数:datetime型の値から日付部分(年-月-日)だけを取り出します。時刻情報は無視されます。

trim()関数:文字列の前後にある空白を削除します。これにより、データに余計な空白が含まれていても、正確に日付の比較ができます。

この2つを組み合わせることで、時刻や空白の影響を受けずに、日付のみを基準とした柔軟なデータ抽出が可能になります。日付でレコードを絞り込みたい場合にぜひ活用してください。

  1. MySQLでDATE型とTIME型からDATETIMEを作成する方法

    はじめにMySQLでは、ADDTIME()関数を使うことで、DATE型の値とTIME型の値を組み合わせてDATETIME型の値を作成できます。この記事では、その具体的な手順をサンプルコードとともに分かりやすく解説します。基本構文DATEとTIMEからDATETIMEを作成する際の基本構文は以下の通りです。SELECT ADDTIME(CONVERT(yourDateColumnName, datetime), yourTimeColumnName) AS anyVariableName FROM yourTableName;ポイントは、CONVERT関数でDATE型のカラムを一度DATETIM

  2. 【PHP】MySQLのDATETIME型から日付だけを抽出して変数に代入する方法

    MySQLのDATETIME型フィールド(例:2018-02-13 13:10:15)から「日付だけ」を取り出したい場合、PHPではDateTimeクラスを使うのが最もシンプルで確実な方法です。SQL側でDATE_FORMAT()を使う方法もありますが、PHP側で柔軟にフォーマットを制御できるDateTimeクラスの利用がおすすめです。DateTime::createFromFormat() の基本構文DateTimeクラスの静的メソッド createFromFormat() を使うと、指定した形式の日時文字列からDateTimeオブジェクトを生成できます。その後、format() メソッドで