Dicas SQL Server

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

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 ()
The following two tabs change content below.

Wesley Mota

DBA SQL Server
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.

Latest posts by Wesley Mota (see all)