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つを組み合わせることで、時刻や空白の影響を受けずに、日付のみを基準とした柔軟なデータ抽出が可能になります。日付でレコードを絞り込みたい場合にぜひ活用してください。
-
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
-
【PHP】MySQLのDATETIME型から日付だけを抽出して変数に代入する方法
MySQLのDATETIME型フィールド(例:2018-02-13 13:10:15)から「日付だけ」を取り出したい場合、PHPではDateTimeクラスを使うのが最もシンプルで確実な方法です。SQL側でDATE_FORMAT()を使う方法もありますが、PHP側で柔軟にフォーマットを制御できるDateTimeクラスの利用がおすすめです。DateTime::createFromFormat() の基本構文DateTimeクラスの静的メソッド createFromFormat() を使うと、指定した形式の日時文字列からDateTimeオブジェクトを生成できます。その後、format() メソッドで