Problema:
Le gustaría agregar un mes a una fecha determinada en una base de datos SQLite.
Ejemplo:
Nuestra base de datos tiene una tabla llamada production
con datos en las columnas id
, product
y start_date
.
id | producto | fecha_inicio |
---|---|---|
1 | escritorio | 2019-08-17 |
2 | sillón | 2019-07-17 |
3 | sofá | 2019-10-31 |
Los productos tienen una nueva fecha de inicio de producción que es un mes posterior a la indicada anteriormente. Obtengamos los nombres de los productos y su nueva fecha de inicio.
Esta es la consulta que escribirías:
Solución:
SELECT product, DATE(start_date,'+1 months') AS new_start_date FROM production;
Este es el resultado de la consulta:
id | producto | nueva_fecha_de_inicio |
---|---|---|
1 | escritorio | 2019-09-17 |
2 | sillón | 2019-08-17 |
3 | sofá | 2019-12-01 |
Discusión:
Usa SQLite DATE()
Función para agregar un mes a una fecha determinada (o fecha y hora). Los argumentos requeridos incluyen la fecha/fechahora para cambiar y uno o más modificadores con valores que indican cuántas unidades suman o restan.
El primer argumento puede ser una expresión que devuelva un valor de fecha/fechahora o una columna de fecha/fechahora. En nuestro ejemplo, es la columna start_date
.
Los modificadores indican qué (y cuánto) unidad de tiempo sumar/restar. En nuestro ejemplo, usamos el modificador '+1 meses '. El modificador comienza con más o menos, lo que indica suma o resta. Luego hay un valor (por ejemplo, 1) y la unidad (por ejemplo, meses , años , días , etc.) Si escribe ‘-2 días ', le restas 2 días a una fecha determinada.
Importante: Algunos modificadores requieren una sintaxis ligeramente diferente a la que se muestra arriba. Por ejemplo, el 'día de la semana El modificador viene antes del valor (es decir, DATE(start_date,'weekday 3')
). Otros modificadores no toman valores, como 'comienzo de mes ', que muestra el primer día del mes para una fecha determinada (es decir, DATE(start_date,' start of month')
). Puede encontrar información precisa sobre los modificadores de fecha y hora en la documentación de SQLite.
Llamamos a la nueva columna que contiene la fecha de inicio actualizada new_start_date
. La nueva fecha de inicio de producción para el escritorio es 2019-09-17
, un mes después de la fecha original de 2019-08-17
. Tenga en cuenta que para 2019-10-31
, la nueva fecha es 2019-12-01
; esto se debe a que noviembre tiene 30 días, no 31.