MySQLのDATE_FORMAT関数でタイムスタンプから月番号を取得する方法
MySQLでタイムスタンプ型のカラムから「月の番号だけ」を取り出したい場合、DATE_FORMAT() 関数を使うのが便利です。書式指定子 %m を指定することで、01〜12の形式で月番号を文字列として取得できます。
この記事では、実際にテーブルを作成し、データを登録して、月番号を抽出するまでの一連の手順をサンプルコード付きで解説します。
1. サンプルテーブルの作成
まず、TIMESTAMP型のカラムを持つテーブルを作成します。
mysql> create table DemoTable1999
(
ArrivalDate timestamp
);
Query OK, 0 rows affected (0.66 sec)2. テストデータの挿入
INSERT文を使って、いくつかのレコードを登録します。
mysql> insert into DemoTable1999 values('2019-01-01 12:34:00');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1999 values('2019-12-31 10:04:00');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1999 values('2018-10-11 04:04:30');
Query OK, 1 row affected (0.14 sec)3. 登録したデータの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select * from DemoTable1999;
実行結果は以下のとおりです。
+---------------------+ | ArrivalDate | +---------------------+ | 2019-01-01 12:34:00 | | 2019-12-31 10:04:00 | | 2018-10-11 04:04:30 | +---------------------+ 3 rows in set (0.00 sec)
4. 月番号を取得するクエリ
ここが本題です。DATE_FORMAT() の第2引数に '%m' を渡すことで、月番号を2桁のゼロ埋め形式(01〜12)で取得できます。
mysql> select date_format(ArrivalDate,'%m') as MonthName from DemoTable1999;
実行結果は以下のとおりです。
+-----------+ | MonthName | +-----------+ | 01 | | 12 | | 10 | +-----------+ 3 rows in set (0.00 sec)
補足:MONTH()関数との違い
なお、数値型として月を取得したい場合は MONTH() 関数を使う方法もあります。SELECT MONTH(ArrivalDate) FROM DemoTable1999; のように記述すると、1や12といった整数値がそのまま返されます。ゼロ埋めの文字列が必要か、数値が必要かによって使い分けるとよいでしょう。
-
MySQLでDATETIME型を数値に変換する方法|UNIX_TIMESTAMP関数の使い方を解説
MySQLで日時(DATETIME型)のデータを数値に変換したい場合は、UNIX_TIMESTAMP()関数を使用します。この関数は、指定した日時を「1970年1月1日 00:00:00(UTC)」からの経過秒数であるUnixタイムスタンプとして返します。基本構文DATETIMEを数値に変換する際の基本構文は以下の通りです。SELECT UNIX_TIMESTAMP(yourColumnName) AS anyVariableName FROM yourTableName;それでは、実際にどのように動作するのか、サンプルテーブルを作成して確認していきましょう。サンプルテーブルの作成まず、テスト
-
PHPのdate_parse()関数でタイムスタンプから日・月・年を抽出する方法
date_parse()関数でタイムスタンプを解析するPHPでタイムスタンプ(日時文字列)から日・月・年を抽出するには、date_parse() 関数を使用します。この関数は日時文字列を解析し、年・月・日・時・分・秒などの情報を連想配列として返してくれます。基本構文は以下の通りです。print_r(date_parse(anyTimeStampValue));サンプルコード具体的なタイムスタンプ値を解析するPHPコードは以下のようになります。$yourTimeStampValue="2019-02-04 12:56:50"; print_r(date_parse($your