MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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を使用します。日付の見せ方を変えたいときは、これらの書式指定子を組み合わせて柔軟に対応できます。

  1. MySQLでタイムスタンプを月に変換するクエリの書き方

    タイムスタンプを月に変換する基本構文MySQLでタイムスタンプ(UNIXタイムスタンプ)を月に変換するには、FROM_UNIXTIME()関数とMONTH()関数を組み合わせて使用します。基本的な構文は以下の通りです。select month(from_unixtime(yourColumnName)) from yourTableName;FROM_UNIXTIME()関数がUNIXタイムスタンプを日時形式に変換し、その結果に対してMONTH()関数を適用することで、月の数値(1〜12)を取得できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> cr

  2. MySQLでLIKEをIN()のように実装するクエリの書き方

    MySQLのIN()のような動作を実現するには、LIKE演算子と組み合わせてCOUNT()関数やIF()関数を使用します。この記事では、具体的な手順をサンプルコード付きで解説します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable    -> (    -> Subject varchar(80)    -> );Query OK, 0 rows affected (0.58 sec)