Dicas

Funções de Data no SQL Server: Conheça a DATEADD ()

Nós DBA’ e desenvolvedores quase sempre temos que trabalhar com datas quando se trata de bancos de dados. Veja as funções de data no SQL Server e como elas podem ajudar a tornar sua vida mais fácil.

Funções de data no SQL Server: sintaxe

Tal como acontece com funções semelhantes,DATEADD pode fazer aritmética em datas, assim como horários. A sintaxe é direta:

DATEADD (datepart, number, date)

O  number deve ser um número inteiro e deve estar dentro do intervalo aceitável de valores para a parte da data.

A  datepart deve ser uma das seguintes partes da data:

DATEPART ABREVIATURAS
ano yy, yyyy
trimestre qq, q
mês mm, m
dia de ano dy, y
dia dd, d
semana wk, ww
dia da semana dw, w
hora hh
minuto mi, n
segundo ss, s
milissegundo Senhora
microssegundo mcs
nanossegundo ns

Embora  DATEADD suporte abreviações conforme mostrado na tabela anterior, devemos nos esforçar para usar a expressão completa para garantir clareza em nosso código. O SQL Server não roda mais rápido se usarmos abreviações.

Também tenha em mente que, embora possamos adicionar ou subtrair nanossegundos com DATEADD, a menor granularidade para um DATETIME2 tipo de dados é de 100 nanossegundos, portanto, o arredondamento precisa ser levado em consideração.

Tipo de retorno

DATEADD retornará um resultado usando o tipo de dados que foi usado no  date parâmetro. Por exemplo, se usarmos uma string literal representando uma data no  YYYYMMDD formato, o tipo de retorno será um  DATETIME valor, porque as sequências literais são implicitamente convertidas  DATETIME.

SELECT DATEADD(DAY, 1, '20181031')
-- retorna DATETIME '2018-11-01 00:00:00.000'

No entanto, se usarmos um  DATETIME2 valor de entrada, o resultado será um  DATETIME2 valor.

SELECT DATEADD(NANOSECOND, 100, CAST('20181031' AS DATETIME2))
-- Retorna DATETIME2

Adição e subtração

Vimos anteriormente que  DATEADD podem ser usados ​​para adição e subtração, o que facilita o cálculo dos valores tanto para trás quanto para frente. Então vamos supor que precisamos calcular um ponto no tempo que foi há 100 dias. Portanto, se usarmos hoje como nosso ponto de partida, seria o seguinte:

DECLARE @dt DATETIME2 = SYSUTCDATETIME();
SELECT @dt AS [TempoAgora], DATEADD(DAY, -100, @dt) AS [TempoSubtraido];

Aritmética nos meses

Um pensamento final sobre essa função. Ao adicionar ou subtrair meses, tome cuidado com meses que não contenham 31 dias. Por exemplo, vamos adicionar um mês ao final de fevereiro de 2018:

SELECT DATEADD(MONTH, 1, '20180428')
-- Rerorna DATETIME '2018-05-28 00:00:00.000'
SELECT DATEADD(MONTH, 1, '20180131');
-- Retorna DATETIME '2018-02-28 00:00:00.000'
SELECT DATEADD(MONTH, 2, '20180131');
-- Retorna DATETIME '2018-03-31 00:00:00.000'
SELECT DATEADD(MONTH, 3, '20180131');
-- Retorna DATETIME '2018-04-30 00:00:00.000'

DATEADD é uma função do sistema muito útil em T-SQL para adicionar e subtrair valores de uma data e hora, que eu uso extensivamente.

As funções de data no SQL Server podem ser extremamente poderosas. Contanto que tenhamos em mente suas peculiaridades em torno de tipos de dados e duração de meses,

Contudo, sinta-se à vontade para compartilhar suas dicas e truques sobre funções de data no SQL Server nos comentários abaixo.

Funções de Data no SQL Server: Conheça a DATEADD ()
Wesley Mota

Profissional graduado em Banco de Dados e Sistemas de Informação com mais de 7 anos de experiência em empresas de software. Certificado MCSA Microsoft SQL Server possui intensa vivência em administração de banco de dados, Tunning, Performance SQL Server, levantamento de melhorias e monitoramento de banco de dados e servidores SQL Server. Consultoria SQL Server em diversos clientes no Brasil e ao redor do mundo. Escritor no blog dbasqlserverbr.com.br/blog. Onde compartilha conhecimento, experiências e dicas de performance para DBAs SQL Server. Conhecimentos em Oracle e ambientes de alta disponibilidade. Desenvolvimento de softwares web e mobile.Gerenciamento de equipe e projetos.

Share
Published by
Wesley Mota

Recent Posts

Dicas de como a função UPPER() no SQL Server pode degradar a performance

Saiba como a função UPPER() no SQL Server pode degradar a performance das suas consultas…

6 anos ago

Como diminuir o RESOURCE_SEMAPHORE_QUERY_COMPILE

Saiba agora mesmo como você pode diminuir o RESOURCE_SEMAPHORE_QUERY_COMPILE no SQL Server. Recentemente eu trabalhei em…

8 anos ago

3 Maneiras Para Proteger a Conta SA no SQL Server

Quais são as diferentes maneiras de proteger o login Senha do Administrador (SA)? Todos estão…

8 anos ago

Alterar a Senha de SA do SQL Server: Como Fazer?

Com os direitos que o login sa tem por padrão no SQL Server, é obrigatório…

8 anos ago

Segurança Para DBAs e Administradores no SQL SERVER

Como um DBA, você tem a responsabilidade de garantir a segurança do aplicativo e dos…

8 anos ago

CAST E CONVERT: Conversões Decimais De Alteração do SQL Server

Ao realizar cálculos simples dentro do SQL Server usando decimais, você pode observar o que…

8 anos ago