Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE DEFINER=`root`@`localhost` PROCEDURE `GeraFeriados`()
- BEGIN
- -- ----------------------------------------------------------------------------------
- -- Variaveis para o algoritmo de Pascoa (Meeus/Jones/Butcher)
- -- ----------------------------------------------------------------------------------
- DECLARE nA INT;
- DECLARE nB INT;
- DECLARE nC INT;
- DECLARE nD INT;
- DECLARE nE INT;
- DECLARE nF INT;
- DECLARE nG INT;
- DECLARE nH INT;
- DECLARE nI INT;
- DECLARE nK INT;
- DECLARE nL INT;
- DECLARE nM INT;
- DECLARE nAno INT;
- DECLARE nMesDePascoa INT;
- DECLARE nDiaDePascoa INT;
- DECLARE dtPascoa DATE;
- DECLARE dtInicial DATE;
- DECLARE dtFinal DATE;
- SET dtInicial = '1990-01-01';
- SET dtFinal = '2099-01-01';
- -- ------------------------------------
- -- Cria a tabela se não existir
- -- ------------------------------------
- DROP TABLE IF EXISTS Feriado;
- CREATE TABLE IF NOT EXISTS Feriado (
- nrAno SMALLINT NOT NULL,
- nrMes SMALLINT NOT NULL,
- nrDia SMALLINT NOT NULL,
- tpFeriado SMALLINT(1) NULL,
- dsFeriado VARCHAR(100) NOT NULL,
- sgUF CHAR(2) NOT NULL
- );
- ALTER TABLE Feriado ADD CONSTRAINT Pk_Feriado PRIMARY KEY CLUSTERED (nrAno, nrMes, nrDia, sgUF);
- -- Apaga os dados se já tiverem sido populados
- TRUNCATE TABLE Feriado;
- -- -----------------------------
- -- Feriados nacionais
- -- -----------------------------
- INSERT INTO Feriado
- SELECT 0, 1, 1, 1, 'Confraternização Universal', ''
- UNION
- SELECT 0, 4, 21, 1, 'Tiradentes', ''
- UNION
- SELECT 0, 5, 1, 1, 'Dia do Trabalhador', ''
- UNION
- SELECT 0, 9, 7, 1, 'Independência', ''
- UNION
- SELECT 0, 10, 12, 1, 'Nossa Senhora Aparecida', ''
- UNION
- SELECT 0, 11, 2, 1, 'Finados', ''
- UNION
- SELECT 0, 11, 15, 1, 'Proclamação da República', ''
- UNION
- SELECT 0, 12, 25, 1, 'Natal', '';
- -- -----------------------------
- -- Feriados estaduais
- -- -----------------------------
- -- Acre
- INSERT INTO Feriado
- SELECT 0, 1, 23, 2, 'Dia do evangélico', 'AC'
- UNION
- SELECT 0, 3, 8, 2, 'Alusivo ao Dia Internacional da Mulher', 'AC'
- UNION
- SELECT 0, 6, 15, 2, 'Aniversário do estado', 'AC'
- UNION
- SELECT 0, 9, 5, 2, 'Dia da Amazônia', 'AC'
- UNION
- SELECT 0, 11, 17, 2, 'Assinatura do Tratado de Petrópolis', 'AC';
- -- Alagoas
- INSERT INTO Feriado
- SELECT 0, 6, 24, 2, 'São João', 'AL'
- UNION
- SELECT 0, 6, 29, 2, 'São Pedro', 'AL'
- UNION
- SELECT 0, 9, 16, 2, 'Emancipação política', 'AL'
- UNION
- SELECT 0, 11, 20, 2, 'Morte de Zumbi dos Palmares', 'AL';
- -- Amapá
- INSERT INTO Feriado
- SELECT 0, 3, 19, 2, 'Dia de São José, santo padroeiro do Estado do Amapá', 'AP'
- UNION
- SELECT 0, 9, 13, 2, 'Criação do Território Federal (Data Magna do estado)', 'AP';
- -- Amazonas
- INSERT INTO Feriado
- SELECT 0, 9, 5, 2, 'Elevação do Amazonas à categoria de província', 'AM'
- UNION
- SELECT 0, 11, 20, 2, 'Dia da Consciência Negra', 'AM';
- -- Bahia
- INSERT INTO Feriado
- SELECT 0, 7, 2, 2, 'Independência da Bahia (Data magna do estado)', 'BA';
- -- Ceará
- INSERT INTO Feriado
- SELECT 0, 3, 25, 2, 'Data magna do estado (data da abolição da escravidão no Ceará)', 'CE';
- -- Distrito Federal
- INSERT INTO Feriado
- SELECT 0, 4, 21, 2, 'Fundação de Brasília', 'DF'
- UNION
- SELECT 0, 11, 30, 2, 'Dia do evangélico', 'DF';
- -- Maranhão
- INSERT INTO Feriado
- SELECT 0, 7, 28, 2, 'Adesão do Maranhão à independência do Brasil', 'MA';
- -- Mato Grosso
- INSERT INTO Feriado
- SELECT 0, 11, 20, 2, 'Dia da Consciência Negra', 'MT';
- -- Mato Grosso do Sul
- INSERT INTO Feriado
- SELECT 0, 10, 11, 2, 'Criação do estado', 'MS';
- -- Minas Gerais
- INSERT INTO Feriado
- SELECT 0, 4, 21, 2, 'Data magna do estado', 'MG';
- -- Pará
- INSERT INTO Feriado
- SELECT 0, 8, 15, 2, 'Adesão do Grão-Pará à independência do Brasil (data magna)', 'PA';
- -- Paraíba
- INSERT INTO Feriado
- SELECT 0, 7, 26, 2, 'Homenagem à memória do ex-presidente João Pessoa', 'PB'
- UNION
- SELECT 0, 8, 5, 2, 'Fundação do Estado em 1585', 'PB';
- -- Paraná
- INSERT INTO Feriado
- SELECT 0, 12, 19, 2, 'Emancipação política (emancipação do Paraná)', 'PR';
- -- Piauí
- INSERT INTO Feriado
- SELECT 0, 10, 19, 2, 'Dia do Piauí', 'PI';
- -- Rio de Janeiro
- INSERT INTO Feriado
- SELECT 0, 4, 23, 2, 'Dia de São Jorge', 'RJ'
- UNION
- SELECT 0, 11, 20, 2, 'Dia da Consciência Negra', 'RJ';
- -- Rio Grande do Norte
- INSERT INTO Feriado
- SELECT 0, 10, 3, 2, 'Mártires de Cunhaú e Uruaçu', 'RN';
- -- Rio Grande do Sul
- INSERT INTO Feriado
- SELECT 0, 9, 20, 2, 'Proclamação da República Rio-Grandense', 'RS';
- -- Rondônia
- INSERT INTO Feriado
- SELECT 0, 1, 4, 2, 'Criação do estado (data magna)', 'RO'
- UNION
- SELECT 0, 6, 18, 2, 'Dia do evangélico', 'RO';
- -- Roraima
- INSERT INTO Feriado
- SELECT 0, 10, 5, 2, 'Criação do estado', 'RR';
- -- Santa Catarina
- INSERT INTO Feriado
- SELECT 0, 10, 5, 2, 'Dia de Santa Catarina', 'SC';
- -- São Paulo
- INSERT INTO Feriado
- SELECT 0, 7, 9, 2, 'Revolução Constitucionalista de 1932 (Data magna do estado)', 'SP';
- -- Sergipe
- INSERT INTO Feriado
- SELECT 0, 3, 17, 2, 'Aniversário de Aracaju', 'SE'
- UNION
- SELECT 0, 6, 24, 2, 'São João', 'SE'
- UNION
- SELECT 0, 7, 8, 2, 'Autonomia política de Sergipe', 'SE'
- UNION
- SELECT 0, 12, 8, 2, 'Nossa Senhora da Conceição', 'SE';
- -- Tocantins
- INSERT INTO Feriado
- SELECT 0, 10, 5, 2, 'Criação do estado', 'TO'
- UNION
- SELECT 0, 3, 18, 2, 'Autonomia do Estado (criação da Comarca do Norte)', 'TO'
- UNION
- SELECT 0, 9, 8, 2, 'Padroeira do Estado (Nossa Senhora da Natividade)', 'TO';
- -- -----------------------------------------------------------------------------------
- -- Feriados móveis: algoritmo de Pascoa (Meeus/Jones/Butcher)
- -- -----------------------------------------------------------------------------------
- WHILE(DATE(dtInicial) <= DATE(dtFinal)) DO
- SET nAno = YEAR(dtInicial);
- SET nA = nAno % 19;
- SET nB = FLOOR(nAno / 100);
- SET nC = nAno % 100;
- SET nD = FLOOR(nB / 4);
- SET nE = nB % 4;
- SET nF = FLOOR((nB + 8) / 25);
- SET nG = FLOOR((nB - nF + 1) / 3);
- SET nH = (19 * nA + nB - nD - nG + 15) % 30;
- SET nI = FLOOR(nC / 4);
- SET nK = nC % 4;
- SET nL = (32 + 2 * nE + 2 * nI - nH - nK) % 7;
- SET nM = FLOOR((nA + 11 * nH + 22 * nL) / 451);
- SET nMesDePascoa = FLOOR((nH + nL - 7 * nM + 114) / 31);
- SET nDiaDePascoa = ((nH + nL - 7 * nM + 114) % 31) + 1;
- SET dtPascoa = CONCAT(CAST(nAno AS CHAR(4)), '-', CAST(nMesDePascoa AS CHAR(2)), '-', CAST(nDiaDePascoa AS CHAR(2)));
- INSERT INTO Feriado
- SELECT YEAR(DATE_ADD(dtPascoa, INTERVAL -2 DAY)), MONTH(DATE_ADD(dtPascoa, INTERVAL -2 DAY)), DAY(DATE_ADD(dtPascoa, INTERVAL -2 DAY)), 1, 'Paixão de Cristo', '';
- INSERT INTO Feriado
- SELECT YEAR(DATE_ADD(dtPascoa, INTERVAL -48 DAY)), MONTH(DATE_ADD(dtPascoa, INTERVAL -48 DAY)), DAY(DATE_ADD(dtPascoa, INTERVAL -48 DAY)), 1, 'Carnaval', '';
- INSERT INTO Feriado
- SELECT YEAR(DATE_ADD(dtPascoa, INTERVAL -47 DAY)), MONTH(DATE_ADD(dtPascoa, INTERVAL -47 DAY)), DAY(DATE_ADD(dtPascoa, INTERVAL -47 DAY)), 1, 'Carnaval', '';
- INSERT INTO Feriado
- SELECT YEAR(DATE_ADD(dtPascoa, INTERVAL 60 DAY)), MONTH(DATE_ADD(dtPascoa, INTERVAL 60 DAY)), DAY(DATE_ADD(dtPascoa, INTERVAL 60 DAY)), 1, 'Corpus Christi', '';
- SET dtInicial = DATE_ADD(dtInicial, INTERVAL 1 YEAR);
- END WHILE;
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement