sql >> Databasteknik >  >> RDS >> SQLite

Hur man lägger till en månad till ett datum i SQLite

Problem:

Du vill lägga till en månad till ett givet datum i en SQLite-databas.

Exempel:

Vår databas har en tabell som heter production med data i kolumnerna id , product och start_date .

id produkt startdatum
1 skrivbord 2019-08-17
2 fåtölj 2019-07-17
3 soffa 2019-10-31

Produkterna har ett nytt produktionsstartdatum som är en månad senare än vad som anges ovan. Låt oss ta reda på produkternas namn och deras nya startdatum.

Här är frågan du skulle skriva:

Lösning:

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

Här är resultatet av frågan:

id produkt nytt_startdatum
1 skrivbord 2019-09-17
2 fåtölj 2019-08-17
3 soffa 2019-12-01

Diskussion:

Använd SQLite DATE() funktion för att lägga till en månad till ett givet datum (eller datum och tid). Argumenten som krävs inkluderar datum/datumtid som ska ändras och en eller flera modifierare med värden som anger hur många enheter som ska läggas till eller subtraheras.

Det första argumentet kan vara ett uttryck som returnerar ett datum/datumtid-värde eller en datum/datumtid-kolumn. I vårt exempel är det kolumnen start_date .

Modifierarna anger vilken (och hur mycket) tidsenhet som ska adderas/subtraheras. I vårt exempel använder vi modifieraren "+1 månader ’. Modifieraren börjar med antingen plus eller minus, vilket indikerar addition eller subtraktion. Sedan finns det ett värde (t.ex. 1) och enheten (t.ex. månader , år , dagar , etc.) Om du skriver "-2 dagar ', subtraherar du 2 dagar från ett givet datum.

Viktigt: Vissa modifierare kräver en något annan syntax än vad som visas ovan. Till exempel "veckodag ’ modifierare kommer före värdet (dvs. DATE(start_date,'weekday 3') ). Andra modifierare har inga värden, som "början av månaden ’, som visar den första dagen i månaden för ett givet datum (d.v.s. DATE(start_date,' start of month') ). Du kan hitta exakt information om datum- och tidsmodifierare i SQLite-dokumentationen.

Vi namngav den nya kolumnen som innehåller det uppdaterade startdatumet new_start_date . Det nya produktionsstartdatumet för skrivbordet är 2019-09-17 , en månad senare än det ursprungliga datumet 2019-08-17 . Observera att för 2019-10-31 , det nya datumet är 2019-12-01; detta beror på att november har 30 dagar, inte 31.


  1. Hur man sammanfogar text från flera rader till en enda textsträng i SQL Server

  2. Introduktion till PL/SQL VARRAYs i Oracle Database

  3. Viktig PostgreSQL-övervakning - Del 1

  4. MariaDB – MySQL – Visa motorer för att visa alla tillgängliga och stödda motorer