DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `util`.`log_formatDate`(vInstance JSON)
	RETURNS longtext CHARSET utf8mb4 COLLATE utf8mb4_bin
	DETERMINISTIC
BEGIN
	DECLARE vKeys JSON;
	DECLARE vPath VARCHAR(255);
	DECLARE vValue VARCHAR(255);
	DECLARE i INT DEFAULT 0;
	DECLARE vCount INT;

	IF vInstance IS NULL THEN
		RETURN NULL;
	END IF;

	SET vKeys = JSON_KEYS(vInstance);
	SET vCount = JSON_LENGTH(vInstance);

	WHILE i < vCount DO
		SET vPath = CONCAT('$.', JSON_VALUE(vKeys, CONCAT('$[', i ,']')));
		SET vValue = JSON_VALUE(vInstance, vPath);
		IF vValue REGEXP '^[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2} [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}$' THEN
			SET vInstance = JSON_SET(vInstance, vPath, DATE_FORMAT(CONVERT_TZ(vValue,  '+01:00', '+00:00'), '%Y-%m-%dT%T.%fZ'));
		END IF;
		SET i := i + 1;
	END WHILE;

	RETURN vInstance;
END$$
DELIMITER ;
