#Este é um post fechado Este post está disponível para assinantes da SQL Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!
artigo sql magazine 47 - Construa geradores de data e manipule data e hora no SQL Server
Artigo da revista SQL Magazine edição 47.

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,
@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 ersas 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,
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
ATENÇÃO! A exibição deste artigo foi interrompida.
#Este é um post fechado Este post está disponível para assinantes da SQL Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!


Estudo comparativo entre banco de dados IBM Informix e Microsoft SQL

0
0
Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!