MySQLのDATE_FORMATで短い月名を表示するには?%Mではなく%bを使う方法
MySQLのDATE_FORMAT()関数において、%Mは「January」「February」のような完全な月名(フルネーム)を表示するための書式指定子です。そのため、「Jan」「Feb」のような短い月名(省略形)を表示する目的には使用できません。
短い月名を表示したい場合は、%bを使用します。両者の違いは以下のとおりです。
- %M:完全な月名(January〜December)
- %b:省略された月名(Jan〜Dec)
基本の構文
SELECT DATE_FORMAT(yourColumnName, '%d-%b-%y') AS anyVariableName FROM yourTableName;
それでは、実際にテーブルを作成して動きを確認してみましょう。
1. テーブルの作成
まずはサンプル用のテーブルを作成します。テーブル作成クエリは次のとおりです。
mysql> create table DateFormatMonthDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> ShippingDate date,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.63 sec)2. レコードの挿入
続いて、INSERTコマンドを使っていくつかのレコードを挿入します。
mysql> insert into DateFormatMonthDemo(ShippingDate) values('2019-05-21');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DateFormatMonthDemo(ShippingDate) values('2015-05-23');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DateFormatMonthDemo(ShippingDate) values('2019-11-01');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DateFormatMonthDemo(ShippingDate) values('2017-12-24');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DateFormatMonthDemo(ShippingDate) values('2016-01-13');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DateFormatMonthDemo(ShippingDate) values('2015-02-22');
Query OK, 1 row affected (0.19 sec)3. 登録データの確認
SELECT文ですべてのレコードを表示してみます。
mysql> select *from DateFormatMonthDemo;
+----+--------------+ | Id | ShippingDate | +----+--------------+ | 1 | 2019-05-21 | | 2 | 2015-05-23 | | 3 | 2019-11-01 | | 4 | 2017-12-24 | | 5 | 2016-01-13 | | 6 | 2015-02-22 | +----+--------------+ 6 rows in set (0.00 sec)
4. 短い月名を表示するクエリ
ここで本題の、%bを使って短い月名を表示するクエリを実行します。「日-月-年」の形式(%d-%b-%y)で出力しています。
mysql> select DATE_FORMAT(ShippingDate, '%d-%b-%y') AS DateDemo from DateFormatMonthDemo;
実行結果は以下のとおりです。月が「May」「Nov」「Dec」のように省略形で表示されているのが分かります。
+-----------+ | DateDemo | +-----------+ | 21-May-19 | | 23-May-15 | | 01-Nov-19 | | 24-Dec-17 | | 13-Jan-16 | | 22-Feb-15 | +-----------+ 6 rows in set (0.04 sec)
まとめ
このように、短い月名を取得したい場合は%Mではなく%bを使うのが正解です。逆に「January」のような完全な月名が必要な場合は%Mを使用します。日付の見せ方を変えたいときは、これらの書式指定子を組み合わせて柔軟に対応できます。
-
MySQLでタイムスタンプを月に変換するクエリの書き方
タイムスタンプを月に変換する基本構文MySQLでタイムスタンプ(UNIXタイムスタンプ)を月に変換するには、FROM_UNIXTIME()関数とMONTH()関数を組み合わせて使用します。基本的な構文は以下の通りです。select month(from_unixtime(yourColumnName)) from yourTableName;FROM_UNIXTIME()関数がUNIXタイムスタンプを日時形式に変換し、その結果に対してMONTH()関数を適用することで、月の数値(1〜12)を取得できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> cr
-
MySQLでLIKEをIN()のように実装するクエリの書き方
MySQLのIN()のような動作を実現するには、LIKE演算子と組み合わせてCOUNT()関数やIF()関数を使用します。この記事では、具体的な手順をサンプルコード付きで解説します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable -> ( -> Subject varchar(80) -> );Query OK, 0 rows affected (0.58 sec)