見出し画像

日付をつかう(5) -日付のデータを日数を増減する処理をしてみる-

皆さん、こんにちは!
日付データは、様々な実務データで基本要素となっています。日付処理で悩むことも多いのではないでしょうか?
今回は、日付、時間のデータに日数、月、年などを増減させる計算処理についてご紹介します。


データソース

Preppin' Data 2024: Week 45 - SuperBytes Stock のInputのExcelファイルから、Available Stockのワークシートを利用します。
日付型のフィールド [Inventory Date] を持ちいます。

https://preppindata.blogspot.com/2024/11/2024-week-45-superbytes-stock.html

Available Stockの日付フィールド

日付、年、月、日の増減処理 <DATEADD関数>

DATEADD(date_part, interval, date) で記述します。

指定された日付に増分を加えて、新しい日付を返します。増分は、interval (増減させる数)と date_part (日付、時間に関する単位)によって定義されます。

加える例:
DATEADD('month', 3, #2023-10-01#) = 2004-07-15 12:00:00 AM

2023年10月1日に対し、月の単位で3増加(3ヶ月加える)処理を行う
結果は、日付時間型で示されます

DATEADD関数の記載例(加える例)

減らす例:
DATEADD('day', -2, #2023-10-01#) = 2004-04-13 12:00:00 AM2024

2023年10月1日に対し、日の単位で2減少(2日減らす)処理を行う
結果は、日付時間型で示されます

DATEADD関数の記載例(減らす例)

1) 月、日の増減

データソースを利用して、具体的な計算結果を見ていきます。

上記の加える例と減らす例の計算式を用いて、データソースに対して計算を行ってみます。なお、date で示される日付のデータは、データソースの [Inventory Date] フィールドを持ちいます。

加える例と減らす例の計算結果

2) その他の増減

DATE_PART (最後に詳細を記載)を変えて利用することで、増減の単位を変えることが出来ます。
増減する日付の単位を、四半期、週に変更した例での計算式(例)は次の通りです。

[加える例(四半期の単位で3四半期加える)]
DATEADD('quarter', 3, [Inventory Date])

四半期を用いた増減計算

[加える例(週の単位で3週加える)]
DATEADD('week', 3, [Inventory Date])

週を用いた増減計算

また、デフォルトで表示される時間に対しても増減処理が出来ます。時間を加えた例での計算式です。
データソースが日付時間型であれば、時間に関する増減処理も利用価値が出てきますね。

[加える例(時の単位で3時間加える)]
DATEADD('hour', 3, [Inventory Date])

時間に関する増減計算
四半期、週、時間の計算結果

3) 日付のみの出す(時間部分を無くす)

DATEADD関数は、デフォルトで時間の表示(12:00:00 AM)がされます。実際の利用時に、日付だけ使いたいと思われるケースも多いと思います。
その際は、もう1つ関数を組み合わせて計算式を作りましょう。1) で利用した(月の単位で3ヶ月加える)の計算を例にします。

[日付のみj表示 加える例(月の単位で3ヶ月加える)]
     DATE(
          DATEADD('month', 3, [Inventory Date])
     )

日付だけにする計算式 例

DATE関数を追加して、日付の表示のみにします。実際の計算結果です。

月の単位で3ヶ月加える計算を日付のみで表示

DATE_PART

日付、時間の単位としてPrepで指定出来る DATE_PART の内容です。計算式の利用時に参考にしてください。

'year' : 4 桁の年
'quarter' : 1 ~ 4
'month' : 1 ~ 12 または "1 月"、"2 月" など
'dayofyear' : 年初来日数 (1 月 1 日は 1、2 月 1 日は 32 など)
'day' : 1 ~ 31
'weekday' : 1 ~ 7 または "日曜日"、"月曜日" など
'week' : 1 ~ 52
'hour' : 0 ~ 23
'minute' : 0 ~ 59
'second' : 0 ~ 60
'iso-year' : ISO 8601 の 4 桁の年
'iso-quarter' : 1 ~ 4
'iso-week' : 1 ~ 52、週の開始は常に月曜日
'iso-weekday' : 1 ~ 7、週の開始は常に月曜日


いいなと思ったら応援しよう!