Here are a few handy calendar functions for US Holidays:
Create FUNCTION dateEasterSunday (p_year int)
RETURNS date DETERMINISTIC
BEGIN
	declare p_day int DEFAULT 0;
	declare p_month int DEFAULT 3;
	declare p_g int DEFAULT 0;
	declare p_c int DEFAULT 0;
	declare p_h int DEFAULT 0;
	declare p_i int DEFAULT 0;
	SET p_g = p_year % 19;
	SET p_c = p_year / 100;
	SET p_h = (p_c - cast(p_c / 4 as int) - cast((8 * p_c + 13) / 25 as int) + 19 * p_g + 15) % 30;
	SET p_i = p_h - cast(p_h / 28 as int) * (1 - cast(p_h / 28 as int) * cast(29 / (p_h + 1) as int) * cast((21 - p_g) / 11 as int));
SET p_day = p_i - ((p_year + cast(p_year / 4 as int) + p_i + 2 - p_c + cast(p_c / 4 as int)) % 7) + 28;
	IF (p_day > 31) THEN
			SET p_month = 4;
			SET p_day = p_day - 31;
	END IF;
	RETURN str_to_date(concat(p_year, '-', p_month, '-', p_day), '%Y-%m-%d');
END;
drop function dateLaborDay;
Create FUNCTION dateLaborDay (p_year int)
RETURNS date DETERMINISTIC
BEGIN
	declare v_days int default 0;
	SET v_days = DAYOFWEEK(str_to_date(concat(p_year, ',09,01'), '%Y,%m,%d'));
	/* 2 is Monday */
	SET v_days = 2-v_days;
	IF v_days < 0 THEN
		RETURN date_add(str_to_date(concat(p_year, ',09,01'), '%Y,%m,%d'), interval 7 + v_days day);
	ELSE
		RETURN date_add(str_to_date(concat(p_year, ',09,01'), '%Y,%m,%d'), interval v_days day);
	END IF;
END;
create FUNCTION dateMemorialDay (p_year int)
RETURNS date deterministic
BEGIN
	declare v_day int default 31;
	while DAYOFWEEK(str_to_date(concat(p_year, ',05,', v_day), '%Y,%m,%d')) <> 2 DO
		SET v_day = v_day - 1;
	end while;
RETURN str_to_date(concat(p_year, ',05,', v_day), '%Y,%m,%d');
END;
Create FUNCTION dateThanksgivingUSA (p_year int)
RETURNS date deterministic
BEGIN
	declare v_day int default 1;
	/* get first thursday */
	while DAYOFWEEK(str_to_date(concat(p_year, ',11,', v_day), '%Y,%m,%d')) <> 5 DO
		SET v_day = v_day + 1;
	end while;
set v_day = v_day + 21;
RETURN str_to_date(concat(p_year, ',11,', v_day), '%Y,%m,%d');
END;
select dateLaborDay(year(now())), dateThanksgivingUSA(year(now())), dateMemorialDay(year(now())), dateEasterSunday(year(now()));
 
								 
				