Problema:
Você gostaria de adicionar um determinado número de dias a uma data em T-SQL.
Exemplo:
Nosso banco de dados tem uma tabela chamada
Flight
com dados nas colunas Code
e DepartureDate
. Código | Data de partida |
---|---|
LT2030 | 20-02-2019 |
GH1100 | 2019-03-01 |
SR5467 | 2019-12-30 |
Vamos alterar a data de partida para todos os voos, adicionando dois dias à data de partida atual.
Solução:
Usaremos a função DATEADD() para especificar a unidade de tempo a ser adicionada, definir quanto adicionar e selecionar a data a ser alterada. Dê uma olhada na consulta:
SELECT Code, DATEADD(day, 2, DepartureDate) AS ChangedDepartureDate FROM Flight;
Aqui está o resultado:
Código | ChangedDepartureDate |
---|---|
LT2030 | 22-02-2019 |
GH1100 | 2019-03-03 |
SR5467 | 2020-01-01 |
Discussão:
Para alterar uma data e/ou hora adicionando um número específico de uma unidade de tempo escolhida, use a função DATEADD() do SQL Server. Esta função funciona em tipos de dados de data, hora ou data e hora. São necessários três argumentos:
- A unidade de data/hora desejada para adicionar. Em nosso exemplo, é dia; queremos adicionar dias à data.
- Quantas unidades adicionar. Em nosso exemplo, isso é 2; queremos adicionar 2 dias à data existente.
- Uma coluna contendo a data/hora/datahora que queremos alterar. (Em nosso exemplo, usamos a coluna DepartureDate.) Esse argumento também pode ser uma expressão que retorna uma data/hora/datahora.
A função DATEADD() retorna uma nova data. Em nosso exemplo, a nova data é retornada como
ChangedDepartureDate
coluna. Para o código de voo 'LT2030', a data '2019-02-20' agora é '2019-02-22'. A função DATEADD() pode usar unidades de data e hora como
year
, quarter
, month
, dayofyear
, day
, week
, weekday
, hour
, minute
, second
, etc. Você pode aprender mais na documentação do SQL Server.