Ir ao conteúdo
  • Cadastre-se
Isador

MySQL RESOLVIDO Procedure não preenche tabela Tempo

Recommended Posts

Olá!

Estou tentando carregar a tabela dimensão tempo através de uma procedure, mas não funciona.

 

Segue procedure

DELIMITER $$
USE `dw_bi_web`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `carga_dim_tempo`()
BEGIN

declare data_inicio date;
declare data_fim date;
declare valor_data date;

SET data_inicio = `01/01/1970`; #data antiga de referência

SET data_fim = CURDATE(); # pega data de hoje do sistema

SET valor_data = data_inicio;

WHILE valor_data < data_fim DO

INSERT INTO dim_tempo(
           ´sk_tempo´,
            ´data´,
            ´dia´, 
            ´num_mes´, 
            ´nome_mes´,
            ´ano´,
            ´ano_mes´,
            ´num_dia_semana´, #domingo=1 ...sábado=7
            ´nome_dia_semana´, #domingo, segunda...
            ´dia_ano´, #dia no ano '2017-02-03' = 34
            ´semana_ano´, #('2008-12-31',1) -> 53
            ´semestre´, 
            ´bimestre´, 
            ´trimestre´, 
            ´quadrimestre´
        ) VALUES (
  
  CAST(DATE_FORMAT(valor_data, '%Y-%m-%d') AS UNSIGNED),
  valor_data,
  DAY(valor_data),
  MONTH(valor_data),
  MONTHNAME(valor_data), #colocar em port
  YEAR(valor_data),
  CAST(DATE_FORMAT(valor_data, '%Y-%m') AS UNSIGNED),
  DAYOFWEEK(valor_data),
  DAYNAME(valor_data), #colocar em port
  DAYOFYEAR(valor_data),
  WEEKOFYEAR(valor_data),
  FLOOR(1 + (month(valor_data) - 1) / 6), #semestre
  FLOOR(1 + (month(valor_data) - 1) / 2), #bimestre
  QUARTER(valor_data), #trimestre
  FLOOR(1 + (month(valor_data) - 1) / 4) #quadrimestre
  );
          
	SET valor_data = DATE_ADD(valor_data, INTERVAL 1 DAY); #incrementa mais um dia a cada data
    END WHILE;

END$$

DELIMITER ;

Alguém consegue enxergar o erro? valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 26/03/2018 às 14:27, Isador disse:

SET data_inicio = `01/01/1970`; #data antiga de referência

 

Olá. Seu erro provavelmente está aqui.

 

O certo seria

 

SET data_inicio = '1970-01-01'; #data antiga de referência

Não testei nem nada, mas batendo o olho rápido seria isso.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, me passei mesmo. rsrs Depois que enxerguei. -_-

Mas valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×