MySQLでDATETIME型から日付のみを抽出する方法
MySQLのDATETIME型カラムから日付部分だけを取り出したい場合、DATE_FORMAT()関数と書式指定子を組み合わせるのが便利です。使用する主な書式指定子は以下の通りです。
- %d … 日(01〜31)
- %m … 月(01〜12)
- %Y … 年(4桁)
それでは、実際にサンプルテーブルを作成して確認してみましょう。
1. テーブルの作成
mysql> create table DemoTable
(
AdmissionDate datetime
);
Query OK, 0 rows affected (0.52 sec)DATETIME型のカラム「AdmissionDate」を持つテーブルを作成しました。
2. レコードの挿入
次に、INSERT文を使っていくつかのレコードを挿入します。
mysql> insert into DemoTable values('2019-07-21 12:34:56');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('2016-08-18 10:00:02');
Query OK, 1 row affected (0.51 sec)
mysql> insert into DemoTable values('2018-01-03 11:02:20');
Query OK, 1 row affected (0.12 sec)3. テーブルの中身を確認
SELECT文ですべてのレコードを表示します。
mysql> select *from DemoTable;
実行結果は以下のようになります。
+---------------------+ | AdmissionDate | +---------------------+ | 2019-07-21 12:34:56 | | 2016-08-18 10:00:02 | | 2018-01-03 11:02:20 | +---------------------+ 3 rows in set (0.00 sec)
4. 日付のみを取得するクエリ
ここからが本題です。DATE_FORMAT()関数を使って、日付のみを「日.月.年」の形式で取得します。
mysql> select date_format(AdmissionDate,'%d.%m.%Y') AS Date from DemoTable;
実行結果:
+------------+ | Date | +------------+ | 21.07.2019 | | 18.08.2016 | | 03.01.2018 | +------------+ 3 rows in set (0.00 sec)
補足:その他の方法
書式を指定せずに単純に日付だけを取り出したい場合は、DATE()関数を使う方法もあります。
mysql> select DATE(AdmissionDate) AS Date from DemoTable;
この場合は「2019-07-21」のように標準形式(YYYY-MM-DD)で結果が返されます。表示形式を自由にコントロールしたいならDATE_FORMAT()、シンプルに日付型として取得したいならDATE()関数と、用途に応じて使い分けるとよいでしょう。
-
【PHP】MySQLのDATETIME型から日付だけを抽出して変数に代入する方法
MySQLのDATETIME型フィールド(例:2018-02-13 13:10:15)から「日付だけ」を取り出したい場合、PHPではDateTimeクラスを使うのが最もシンプルで確実な方法です。SQL側でDATE_FORMAT()を使う方法もありますが、PHP側で柔軟にフォーマットを制御できるDateTimeクラスの利用がおすすめです。DateTime::createFromFormat() の基本構文DateTimeクラスの静的メソッド createFromFormat() を使うと、指定した形式の日時文字列からDateTimeオブジェクトを生成できます。その後、format() メソッドで
-
C#のDateTimeオブジェクトから日付部分のみを取得する方法
C#のDateTimeオブジェクトには日付と時刻の両方の情報が含まれていますが、用途によっては日付部分だけが必要になることがあります。ここでは、DateTimeから日付のみを取り出す代表的な4つの方法を解説します。主な取得方法ToShortDateString()メソッド現在のDateTimeオブジェクトの値を、短い形式の日付文字列に変換します。戻り値は、システムのカルチャ(地域)設定に基づいた短い日付表現の文字列です。ToLongDateString()メソッド現在のDateTimeオブジェクトの値を、長い形式(年・月・日をすべて含む詳細な表記)の日付文字列に変換します。こちらもカルチャ設定