Problem:
Chciałbyś dodać jeden miesiąc do podanej daty w bazie danych SQLite.
Przykład:
Nasza baza danych zawiera tabelę o nazwie production
z danymi w kolumnach id
, product
i start_date
.
id | produkt | data_początkowa |
---|---|---|
1 | biurko | 2019-08-17 |
2 | fotel | 2019-07-17 |
3 | sofa | 31.10.2019 |
Produkty mają nową datę rozpoczęcia produkcji, która jest o miesiąc późniejsza niż podana powyżej. Uzyskajmy nazwy produktów i ich nową datę rozpoczęcia.
Oto zapytanie, które napiszesz:
Rozwiązanie:
SELECT product, DATE(start_date,'+1 months') AS new_start_date FROM production;
Oto wynik zapytania:
id | produkt | nowa_data_początkowa |
---|---|---|
1 | biurko | 2019-09-17 |
2 | fotel | 2019-08-17 |
3 | sofa | 2019-12-01 |
Dyskusja:
Użyj SQLite DATE()
funkcja dodawania miesiąca do podanej daty (lub daty i godziny). Wymagane argumenty obejmują datę/data/godzinę zmiany oraz jeden lub więcej modyfikatorów z wartościami wskazującymi, ile jednostek należy dodać lub odjąć.
Pierwszym argumentem może być wyrażenie zwracające wartość daty/daty/godziny lub kolumna data/data/godzina. W naszym przykładzie jest to kolumna start_date
.
Modyfikatory wskazują, jaką (i ile) jednostkę czasu dodać/odjąć. W naszym przykładzie używamy modyfikatora „+1 miesiąc ”. Modyfikator zaczyna się od plusa lub minusa, wskazując dodawanie lub odejmowanie. Następnie jest wartość (np. 1) i jednostka (np. miesiące , lata , dni itp.) Jeśli napiszesz „-2 dni ”, odejmujesz 2 dni od podanej daty.
Ważne: Niektóre modyfikatory wymagają nieco innej składni niż pokazano powyżej. Na przykład „dzień powszedni modyfikator ’ występuje przed wartością (np. DATE(start_date,'weekday 3')
). Inne modyfikatory nie przyjmują wartości, np. „początek miesiąca ’, który wyświetla pierwszy dzień miesiąca dla podanej daty (np. DATE(start_date,' start of month')
). Dokładne informacje o modyfikatorach daty i czasu można znaleźć w dokumentacji SQLite.
Nazwaliśmy nową kolumnę zawierającą zaktualizowaną datę rozpoczęcia new_start_date
. Nowa data rozpoczęcia produkcji biurka jest 2019-09-17
, miesiąc później niż pierwotna data 2019-08-17
. Zauważ, że dla 2019-10-31
, nowa data to 2019-12-01
; dzieje się tak, ponieważ listopad ma 30 dni, a nie 31.