Проблем:
Бихте искали да добавите един месец към дадена дата в база данни на SQLite.
Пример:
Нашата база данни има таблица с име production
с данни в колоните id
, product
и start_date
.
id | продукт | начална_дата |
---|---|---|
1 | бюро | 17.08.2019 |
2 | фотьойл | 17.07.2019 |
3 | диван | 31.10.2019 |
Продуктите имат нова начална дата на производство, която е един месец по-късно от изброената по-горе. Нека получим имената на продуктите и новата им начална дата.
Ето заявката, която бихте написали:
Решение:
SELECT product, DATE(start_date,'+1 months') AS new_start_date FROM production;
Ето резултата от заявката:
id | продукт | нова_начална_дата |
---|---|---|
1 | бюро | 17.09.2019 |
2 | фотьойл | 17.08.2019 |
3 | диван | 01.12.2019 |
Дискусия:
Използвайте SQLite DATE()
функция за добавяне на един месец към дадена дата (или дата и час). Необходимите аргументи включват датата/датата и часа за промяна и един или повече модификатори със стойности, които показват колко към добавяне или изваждане на единици.
Първият аргумент може да бъде израз, връщащ стойност за дата/дата и час или колона дата/дата и час. В нашия пример това е колоната start_date
.
Модификаторите показват каква (и колко) времева единица да се добави/извади. В нашия пример използваме модификатора „+1 месеца ’. Модификаторът започва с плюс или минус, което показва събиране или изваждане. След това има стойност (напр. 1) и единица (напр. месеци , години , дни и др.) Ако напишете „-2 дни “, изваждате 2 дни от дадена дата.
Важно: Някои модификатори изискват малко по-различен синтаксис от показания по-горе. Например „делник ’ модификаторът идва преди стойността (т.е. DATE(start_date,'weekday 3')
). Други модификатори не приемат стойности, като „начало на месеца ’, който показва първия ден от месеца за дадена дата (т.е. DATE(start_date,' start of month')
). Можете да намерите точна информация за модификаторите на дата и час в документацията на SQLite.
Нарекохме новата колона, съдържаща актуализираната начална дата new_start_date
. Новата начална дата на производство за бюро е 2019-09-17
, един месец по-късно от първоначалната дата на 2019-08-17
. Обърнете внимание, че за 2019-10-31
, новата дата е 2019-12-01
; това е така, защото ноември има 30 дни, а не 31.