Probleem:
U wilt een maand toevoegen aan een bepaalde datum in een SQLite-database.
Voorbeeld:
Onze database heeft een tabel met de naam production
met gegevens in de kolommen id
, product
, en start_date
.
id | product | startdatum |
---|---|---|
1 | bureau | 2019-08-17 |
2 | fauteuil | 2019-07-17 |
3 | bank | 31-10-2019 |
Producten hebben een nieuwe startdatum voor productie die een maand later is dan hierboven vermeld. Laten we de namen van de producten en hun nieuwe startdatum vragen.
Dit is de vraag die je zou schrijven:
Oplossing:
SELECT product, DATE(start_date,'+1 months') AS new_start_date FROM production;
Dit is het resultaat van de zoekopdracht:
id | product | new_start_date |
---|---|---|
1 | bureau | 2019-09-17 |
2 | fauteuil | 2019-08-17 |
3 | bank | 2019-12-01 |
Discussie:
Gebruik de SQLite DATE()
functie om een maand toe te voegen aan een bepaalde datum (of datum en tijd). De vereiste argumenten omvatten de datum/datum/tijd die moet worden gewijzigd en een of meer modifiers met waarden die aangeven hoeveel eenheden moeten worden opgeteld of afgetrokken.
Het eerste argument kan een expressie zijn die een datum/datum/tijd-waarde of een datum/datum/tijd-kolom retourneert. In ons voorbeeld is dit de kolom start_date
.
De modifiers geven aan welke (en hoeveel) tijdseenheid moet worden opgeteld/afgetrokken. In ons voorbeeld gebruiken we de modifier '+1 maanden ’. De modifier begint met plus of min, wat optellen of aftrekken aangeeft. Dan is er een waarde (bijv. 1) en de eenheid (bijv. maanden , jaar , dagen , etc.) Als u '-2 dagen . schrijft ’, trek je 2 dagen af van een bepaalde datum.
Belangrijk: Sommige modifiers vereisen een iets andere syntaxis dan hierboven weergegeven. Bijvoorbeeld de 'weekdag ’ modifier komt voor de waarde (d.w.z. DATE(start_date,'weekday 3')
). Andere modifiers hebben geen waarden, zoals 'begin van de maand ’, die de eerste dag van de maand voor een bepaalde datum weergeeft (d.w.z. DATE(start_date,' start of month')
). U kunt nauwkeurige informatie over datum- en tijdmodifiers vinden in de SQLite-documentatie.
We noemden de nieuwe kolom met de bijgewerkte startdatum new_start_date
. De nieuwe startdatum van de productie voor het bureau is 2019-09-17
, een maand later dan de oorspronkelijke datum van 2019-08-17
. Merk op dat voor 2019-10-31
, de nieuwe datum is 2019-12-01
; dit komt omdat november 30 dagen heeft, niet 31.