create function to_date(str_date varchar(256),format varchar(256)) RETURNS varchar(256) begin declare c varchar(256); if INSTR(lower(format),'mm')=0 THEN set str_date = CONCAT(str_date,'01'); set format = CONCAT(format,'mm'); END IF; IF INSTR(lower(format),'dd')=0 THEN set str_date = CONCAT(str_date,'01'); set format = CONCAT(format,'dd'); END IF; select STR_TO_DATE(str_date, replace(replace(replace(replace(replace(replace(lower(format),'yyyy','%Y'),'mm','%m'),'dd','%d'),'hh','%H'),'mi','%i'),'ss','%s')) from dual into c; return c; end;