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.