Problém:
Chcete přidat jeden měsíc k danému datu v databázi SQLite.
Příklad:
Naše databáze obsahuje tabulku s názvem production
s údaji ve sloupcích id
, product
a start_date
.
id | produkt | počáteční_datum |
---|---|---|
1 | stůl | 2019-08-17 |
2 | křeslo | 2019-07-17 |
3 | pohovka | 2019-10-31 |
Produkty mají nové datum zahájení výroby, které je o měsíc později, než je uvedeno výše. Pojďme získat názvy produktů a jejich nové datum zahájení.
Zde je dotaz, který byste napsali:
Řešení:
SELECT product, DATE(start_date,'+1 months') AS new_start_date FROM production;
Zde je výsledek dotazu:
id | produkt | new_start_date |
---|---|---|
1 | stůl | 2019-09-17 |
2 | křeslo | 2019-08-17 |
3 | pohovka | 12. 12. 2019 |
Diskuse:
Použijte SQLite DATE()
funkce pro přidání jednoho měsíce k danému datu (nebo datu a času). Mezi požadované argumenty patří datum/datum a čas, který se má změnit, a jeden nebo více modifikátorů s hodnotami, které udávají, kolik jednotek lze přidat nebo odečíst.
První argument může být výraz vracející hodnotu datum/datum a čas nebo sloupec datum/datum a čas. V našem příkladu je to sloupec start_date
.
Modifikátory udávají, jakou (a kolik) časovou jednotku přidat/odečíst. V našem příkladu používáme modifikátor ‘+1 měsíců '. Modifikátor začíná buď plusem nebo mínusem, což znamená sčítání nebo odčítání. Potom je zde hodnota (např. 1) a jednotka (např. měsíce , roky , dny , atd.) Pokud napíšete ‚-2 dny “, odečtete 2 dny od daného data.
Důležité: Některé modifikátory vyžadují mírně odlišnou syntaxi, než je uvedeno výše. Například „den v týdnu Modifikátor ’ je před hodnotou (tj. DATE(start_date,'weekday 3')
). Ostatní modifikátory nemají žádnou hodnotu, například „začátek měsíce ’, který zobrazuje první den v měsíci pro dané datum (tj. DATE(start_date,' start of month')
). Přesné informace o modifikátorech data a času najdete v dokumentaci SQLite.
Nový sloupec obsahující aktualizované datum zahájení jsme pojmenovali new_start_date
. Nové datum zahájení výroby pro pracovní stůl je 2019-09-17
, o měsíc později než původní datum 2019-08-17
. Všimněte si, že pro 2019-10-31
, nové datum je 2019-12-01
; je to proto, že listopad má 30 dní, nikoli 31.