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.