MySQLでDATETIMEから時間部分を削除する方法
MySQLのDATETIMEから時間コンポーネントを取り除くには?
MySQLでは、DATE()関数を使うことで、DATETIME型の値から時間部分を簡単に取り除き、日付だけを抽出することができます。
基本構文
SELECT DATE(カラム名) FROM テーブル名;
DATE()関数にDATETIME型のカラムを渡すと、時刻情報が切り捨てられ、「YYYY-MM-DD」形式の日付のみが返されます。
実際に試してみよう
ここからは、具体的な例を使って動作を確認していきます。まず、サンプル用のテーブルを作成します。
1. テーブルの作成
mysql> create table StripComponentDatetimeDemo -> ( -> YourDateTime datetime -> ); Query OK, 0 rows affected (0.60 sec)
DATETIME型のカラム「YourDateTime」を持つテーブル「StripComponentDatetimeDemo」が作成できました。
2. レコードの挿入
次に、現在日時に1日を加算した値を挿入してみます。date_add(now(), interval 1 day)を使うことで、明日の日時が登録されます。
mysql> insert into StripComponentDatetimeDemo values(date_add(now(),interval 1 day)); Query OK, 1 row affected (0.13 sec)
3. 登録データの確認
SELECT文でテーブルの中身を確認しましょう。
mysql> select *from StripComponentDatetimeDemo;
実行結果は以下の通りです。日付と時刻の両方が表示されていることがわかります。
+---------------------+ | YourDateTime | +---------------------+ | 2018-11-25 20:15:07 | +---------------------+ 1 row in set (0.00 sec)
DATE()関数で時間部分を削除する
それでは、本題である時間部分の削除を行います。以下のようにDATE()関数を使用します。
mysql> SELECT DATE(YourDateTime) from StripComponentDatetimeDemo;
実行結果:
+--------------------+ | DATE(YourDateTime) | +--------------------+ | 2018-11-25 | +--------------------+ 1 row in set (0.00 sec)
このように、時刻「20:15:07」が取り除かれ、日付「2018-11-25」だけが取得できました。
まとめ
- DATETIMEから時間部分を削除するにはDATE()関数を使用する
- 戻り値は「YYYY-MM-DD」形式の日付のみ
- GROUP BYでの日別集計や、日付同士の比較などにも活用できる
なお、WHERE句内でカラムに関数を適用するとインデックスが使われなくなる場合があるため、大量データを扱う際はパフォーマンスへの影響にも注意しましょう。
-
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で時間をHH:MM:SSからHH:MM形式に変換する方法
MySQLのTIME_FORMAT()関数で時間形式を変換するMySQLでTIME型の時間を「HH:MM:SS」から「HH:MM」形式に変換するには、TIME_FORMAT()関数を使用します。この関数を使うと、秒を取り除いた見やすい時間表示を簡単に実現できます。ここでは、実際の手順をサンプルコードとともに解説します。1. サンプルテーブルの作成まず、TIME型のカラムを持つテーブルを作成します。mysql> create table DemoTable1419-> (-> ArrivalTime time-> );Query OK, 0 rows affected (