2022年6月8日

【MySql】 DATETIME型を日付(曜日付)に変換する

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
曜日function結果
結果

DATETIME型の日付を日本語で表示できるようになりました。

Share this content: