問題:
SQLiteデータベースの特定の日付に1か月を追加したいとします。
例:
私たちのデータベースには、production
id
列にデータがあります 、product
、およびstart_date
。
id | 製品 | start_date |
---|---|---|
1 | デスク | 2019-08-17 |
2 | アームチェア | 2019-07-17 |
3 | ソファ | 2019-10-31 |
製品の新しい生産開始日は、上記のリストより1か月遅れています。製品の名前と新しい開始日を取得しましょう。
作成するクエリは次のとおりです。
解決策:
SELECT product, DATE(start_date,'+1 months') AS new_start_date FROM production;
クエリの結果は次のとおりです。
id | 製品 | new_start_date |
---|---|---|
1 | デスク | 2019-09-17 |
2 | アームチェア | 2019-08-17 |
3 | ソファ | 2019-12-01 |
ディスカッション:
SQLiteのDATE()
を使用します 指定された日付(または日付と時刻)に1か月を追加する関数。必要な引数には、変更する日付/日時と、加算または減算する単位の数を示す値を持つ1つ以上の修飾子が含まれます。
最初の引数は、日付/日時の値または日付/日時の列を返す式にすることができます。この例では、start_date
列です。 。
修飾子は、加算/減算する時間単位(および量)を示します。この例では、修飾子「 +1months」を使用しています。 ’。修飾子はプラスまたはマイナスで始まり、加算または減算を示します。次に、値(例:1)と単位(例:月)があります 、年 、日 など)「-2日 ’、指定された日付から2日を減算します。
重要: 一部の修飾子は、上記とは少し異なる構文を必要とします。たとえば、「平日 ’修飾子は値の前にあります(つまり、DATE(start_date,'weekday 3')
)。 「月の初め」など、他の修飾子は値を取りません。 ’、指定された日付の月の最初の日を表示します(つまり、DATE(start_date,' start of month')
)。日付と時刻の修飾子に関する正確な情報は、SQLiteのドキュメントにあります。
更新された開始日を含む新しい列にnew_start_date
という名前を付けました 。 デスクの新しい生産開始日 は2019-09-17
、2019-08-17
の元の日付より1か月後 。 2019-10-31
の場合は注意してください 、新しい日付は2019-12-01
;これは、11月が31日ではなく30日であるためです。