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.
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];
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.
Blackjack, additionally known as twenty-one, is just one of one of the most popular gambling…
If you are a fan of online gambling, then you must have come across gry…
On the internet online casinos have transformed the betting industry, enabling players to vegas.hu online…
Casinos online offer free spins to draw new customers. These bonuses are usually very profitable,…
In recent times, online casino sites have actually obtained enormous appeal among gamers, providing a…
Bitcoin, the most preferred cryptocurrency worldwide, has reinvented lots of industries, including the on baixar…