sql >> Database >  >> RDS >> SQLite

Een maand toevoegen aan een datum in SQLite

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.


  1. Unnes array met één niveau

  2. Hoe last_insert_rowid() werkt in SQLite

  3. Django ConnectionAbortedError:[WinError 10053] Een tot stand gebrachte verbinding is afgebroken door de software op uw hostcomputer

  4. PL/SQL-zelfstudie:alles wat u moet weten over PL/SQL