MySqlのDATETIME型の日付を日本語日付 “YYYY年MM月DD日(曜日)” に変換するストアドファンクションを紹介します。
CREATE DEFINER=`root`@`localhost` FUNCTION `f_get_date`(`dt` DATETIME)
RETURNS varchar(20) CHARSET utf8
BEGIN
DECLARE sRet VARCHAR(20);
DECLARE sDay VARCHAR(20);
DECLARE sWeek VARCHAR(2);
IF dt = 0 THEN
SET sRet = '';
ELSE
SET sDay = DATE_FORMAT(dt, '%Y年%m月%d日');
SET sWeek = ELT(WEEKDAY(current_timestamp)+1,"月","火","水","木","金","土","日");
SET sRet = CONCAT(sDay, '(', sWeek, ')');
END IF;
RETURN sRet;
END
MySQL Workbenchを使って登録しましたがその際、
ERROR 1418: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)
というエラーが発生することがあります。
その際は、SET GLOBAL log_bin_trust_function_creators = 1;というコマンドを事前に実行すると解決します。
では、作った関数を実際に使ってみます。
select current_timestamp as today
, f_get_date(current_timestamp) as today_jp
DATETIME型の日付を日本語で表示できるようになりました。