DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


artigo sql magazine 47 - Construa geradores de data e manipule data e hora no SQL Server

Artigo da revista SQL Magazine edição 47.

Esse artigo faz parte da revista SQL Magazine edição 47. Clique aqui para ler todos os artigos desta edição

 

Construa geradores de data e manipule data e hora no SQL Server

 

Às vezes você necessita gerar seqüências de valores de data e/ ou hora. Por exemplo, imagine um data warehouse com sua estrutura multidimensional e armazenando as medidas e dimensões em tabelas fato e dimensão. Já que uma das dimensões é praticamente sempre a dimensão tempo, você necessitaria gerar a seqüência de valores de data (hora) e carregá-los na tabela de dimensão de hora. Este artigo demonstra como construir geradores de data usando o SQL. Além disto, ele mostrará algumas técnicas úteis que podem ajudá-lo a manipular dados de data e hora.

 

Geradores de data

Primeiro, vamos criar e carregar uma tabela auxiliar que consiste de uma coluna do tipo integer .

 

Listagem 1. Criando e carregando a tabela auxiliar.

SET NOCOUNT ON;

DECLARE

@startDate smalldatetime, @endDate smalldatetime, @i int;

 SELECT @i = 1,

 @startDate = ‘Jan 01, 2007’,

 @endDate = DATEADD(yy, 1, @startDate);

  IF EXISTS(SELECT * FROM sysobjects

  WHERE ID = (OBJECT_ID(‘dbo.sequence’)) AND xtype = ‘U’)

  DROP TABLE dbo.sequence;

  CREATE TABLE dbo.sequence(num int NOT NULL);

   WHILE(@i <= (SELECT DATEDIFF(dd, @startDate, @endDate)))

    BEGIN

    INSERT INTO dbo.sequence VALUES(@i);

    SET @i = @i + 1;

   END

 

 Você pode usar o SQL para gerar seqüências de números de diversas maneiras. O código da Listagem 1 mantém as coisas sem complicações usando um loop simples.A quantidade de números (365) na tabela auxiliar é igual ao número de dias no ano 2007 e foram calculados automaticamente usando a função DATEDIFF  do SQL Server. Agora, você pode gerar a seqüência de dias no ano 2007 como mostrado na Listagem 2.

 

Listagem 2. Gerando a seqüência de dias do ano 2007.

DECLARE

@iniDate smalldatetime;

  SELECT @iniDate = ‘Dec 31, 2006’;

  SELECT DATEADD(dd, num, @iniDate) DayOfYear

   FROM sequence;

   DayOfYear

-----------------------

2007-01-01 00:00:00

2007-01-02 00:00:00

2007-01-03 00:00:00

2007-01-04 00:00:00

"



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Publicidade
Autor
Equipe Devmedia

Noticias/Dicas/Artigos publicados.




Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03