MySQLにてSELECT時にdate型のカラムから和暦を計算し表示する方法
MySQLにdate型のカラムに誕生年月日が格納されており、そこから和暦を計算して取得したい。また、date型だと基本的には「YYYY-MM-DD」もしくは「YYYY/MM/DD」形式だと思うが、これを「〇〇Y年M月D日」に整形して表示したい。以下に対応方法をメモ。
テーブル構造とデータ内容
mysql> SHOW COLUMNS FROM `test_table`; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | name | varchar(255) | NO | | NULL | | | birthday | date | NO | | NULL | | +----------+--------------+------+-----+---------+----------------+ mysql> SELECT * FROM `test_table`; +----+-----------+------------+ | id | name | birthday | +----+-----------+------------+ | 1 | 山田 | 2020-01-01 | | 2 | 鈴木 | 1990-05-05 | | 3 | 佐々木 | 1980-12-31 | +----+-----------+------------+
対応方法
SQL文
SELECT `birthday`,
CASE
WHEN `birthday` > '2019-04-30' THEN CONCAT('令和', YEAR(`birthday`) - 2018, date_format(`birthday`, '年%c月%e日'))
WHEN `birthday` > '1989-01-07' THEN CONCAT('平成', YEAR(`birthday`) - 1988, date_format(`birthday`, '年%c月%e日'))
WHEN `birthday` > '1926-12-24' THEN CONCAT('昭和', YEAR(`birthday`) - 1925, date_format(`birthday`, '年%c月%e日'))
WHEN `birthday` > '1912-07-29' THEN CONCAT('大正', YEAR(`birthday`) - 1911, date_format(`birthday`, '年%c月%e日'))
WHEN `birthday` > '1868-01-24' THEN CONCAT('明治', YEAR(`birthday`) - 1867, date_format(`birthday`, '年%c月%e日'))
END AS `birthday_wareki`
FROM `test_table`;
出力結果
+------------+-----------------------+ | birthday | birthday_wareki | +------------+-----------------------+ | 2020-01-01 | 令和2年1月1日 | | 1990-05-05 | 平成2年5月5日 | | 1980-12-31 | 昭和55年12月31日 | +------------+-----------------------+
参考サイト
関連記事
-
-
MySQLでLIKE検索時に大文字・小文字・半角・全角全て区別したい
以前にMySQLであいまい検索時に大文字小文字は区別しないが、それ以外は全て区別 ...
-
-
mysqldumpが使えないレンタルサーバでMySQLのバックアップ
mysqldumpが使えないレンタルサーバで開発を行うことがあり、尚且つ他社に使 ...
-
-
MySQLが起動も再起動もできない際の対応方法
サイトで障害が発生した。FTPやSSH接続は出来るけどサイト自体は表示されない。 ...
-
-
phpmyadminからプロセスの停止
重たいSQL文を叩いた際、どうにも処理できず メモリ使用率が100%から下がらな ...
-
-
MySQLでtime型データからint型データの減算を行い、減算後のデータで条件検索する方法
MySQLでtime型データからint型データの減算を行い、減算後のデータを検索 ...