【PHP】MySQLのDATETIME型から日付だけを抽出して変数に代入する方法
MySQLのDATETIME型フィールド(例:2018-02-13 13:10:15)から「日付だけ」を取り出したい場合、PHPではDateTimeクラスを使うのが最もシンプルで確実な方法です。SQL側でDATE_FORMAT()を使う方法もありますが、PHP側で柔軟にフォーマットを制御できるDateTimeクラスの利用がおすすめです。
DateTime::createFromFormat() の基本構文
DateTimeクラスの静的メソッド createFromFormat() を使うと、指定した形式の日時文字列からDateTimeオブジェクトを生成できます。その後、format() メソッドで任意の形式に変換します。
DateTime::createFromFormat("Y-m-d H:i:s", yourDateTimeValue)->format("yourFormatSpecifier");- 第1引数:入力される日時文字列のフォーマット(MySQLのDATETIME型なら "Y-m-d H:i:s")
- 第2引数:データベースから取得した日時の値
- format():出力したい形式の指定子(例:"d/m/Y"、"Y年m月d日" など)
実際のコード例
以下は、MySQLから取得したDATETIME値を「日/月/年」の形式で表示するサンプルコードです。
$MySQLDataBaseDateTime = "2018-02-13 13:10:15";
echo DateTime::createFromFormat("Y-m-d H:i:s", $MySQLDataBaseDateTime)->format("d/m/Y");実行結果
13/02/2018
このように、時刻情報を取り除いて日付のみを簡単に抽出できます。
日本語形式で出力したい場合
format() の指定子を変更すれば、好みの形式で自由に出力できます。例えば「2018年2月13日」という日本語形式にするには次のように書きます。
echo DateTime::createFromFormat("Y-m-d H:i:s", $MySQLDataBaseDateTime)->format("Y年n月j日");また、オブジェクトを変数に代入しておけば、複数の形式で再利用することも可能です。
$date = DateTime::createFromFormat("Y-m-d H:i:s", $MySQLDataBaseDateTime);
echo $date->format("d/m/Y"); // 13/02/2018
echo $date->format("Y-m-d"); // 2018-02-13まとめ
- MySQLのDATETIME値から日付だけを取り出すには DateTime::createFromFormat() を使う
- format() の指定子を変えるだけで、さまざまな表示形式に対応できる
- DateTimeオブジェクトを変数に入れておくと再利用性が高まる
-
MySQLでタイムスタンプ(UNIX時間)から日付のみを表示する方法
タイムスタンプ(UNIX時間)の値から日付を表示するには、MySQLのFROM_UNIXTIME()関数を使用します。この関数は、UNIXタイムスタンプを「YYYY-MM-DD HH:MM:SS」形式の日時に変換してくれます。ここでは、実際にテーブルを作成し、動作を確認していきましょう。 サンプルテーブルの作成 まず、タイムスタンプ値を格納するためのテーブルを作成します。 mysql> create table DemoTable -> ( -> timestampValue bigint -> ); Query OK, 0 rows affe
-
MySQLで特定の年の開始日と終了日を取得する方法
MySQLで特定の年に該当するレコードの開始日(StartDate)と終了日(EndDate)を抽出するには、YEAR()関数を使用します。この関数は日付から「年」の部分だけを取り出すことができるため、年の条件での絞り込みに便利です。ここでは、実際にテーブルを作成し、サンプルデータを登録して、特定の年でレコードを検索する手順を順番に解説します。1. サンプルテーブルを作成するまず、開始日と終了日を格納するためのテーブルを作成します。mysql> create table DemoTable1843 ( StartDate date, EndDate date