問題:
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日であるためです。