SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Como adicionar um mês a uma data no SQLite

Problema:


Você gostaria de adicionar um mês a uma determinada data em um banco de dados SQLite.

Exemplo:


Nosso banco de dados tem uma tabela chamada production com dados nas colunas id , product e start_date .
id produto data_inicial
1 mesa 2019-08-17
2 poltrona 2019-07-17
3 sofá 31-10-2019

Os produtos têm uma nova data de início de produção um mês após a listada acima. Vamos pegar os nomes dos produtos e sua nova data de início.

Aqui está a consulta que você escreveria:

Solução:

SELECT product,
  DATE(start_date,'+1 months')
  AS new_start_date
FROM production;

Segue o resultado da consulta:
id produto new_start_date
1 mesa 2019-09-17
2 poltrona 2019-08-17
3 sofá 2019-12-01

Discussão:


Use o SQLite DATE() função para adicionar um mês a uma determinada data (ou data e hora). Os argumentos necessários incluem a data/datahora a ser alterada e um ou mais modificadores com valores que indicam quantas unidades adicionar ou subtrair.

O primeiro argumento pode ser uma expressão que retorna um valor de data/datahora ou uma coluna de data/datahora. Em nosso exemplo, é a coluna start_date .

Os modificadores indicam qual (e quanto) unidade de tempo adicionar/subtrair. Em nosso exemplo, usamos o modificador '+1 meses '. O modificador começa com mais ou menos, indicando adição ou subtração. Em seguida, há um valor (por exemplo, 1) e a unidade (por exemplo, meses , anos , dias , etc.) Se você escrever '-2 dias ’, você subtrai 2 dias de uma determinada data.

Importante: Alguns modificadores requerem uma sintaxe ligeiramente diferente da mostrada acima. Por exemplo, o 'dia da semana ' vem antes do valor (ou seja, DATE(start_date,'weekday 3') ). Outros modificadores não aceitam valores, como 'início do mês ', que exibe o primeiro dia do mês para uma determinada data (ou seja, DATE(start_date,' start of month') ). Você pode encontrar informações precisas sobre modificadores de data e hora na documentação do SQLite.

Nomeamos a nova coluna contendo a data de início atualizada new_start_date . A nova data de início da produção para a mesa é 2019-09-17 , um mês depois da data original de 2019-08-17 . Observe que para 2019-10-31 , a nova data é 2019-12-01; isso ocorre porque novembro tem 30 dias, não 31.

No