HYYWD - 日付時間値から年と週番号を取得

HNAME および HPART で返された週番号を入力日付の前後いずれかに配置して、年の値に含めることができます。

HYYWD 関数は、指定した日付時間値から年と週番号の両方を返します。

出力は、日付と週番号の ISO 標準フォーマットである yyyy-Www-d に適合するように編集されます。

日付時間値から年と週番号を取得

HYYWD(dtvalue, output)

説明

dtvalue

日付時間

編集する日付時間値です。値を含む日付時間フィールド名、または値を返す式を指定することもできます。

output

文字

結果を格納するフィールド名、または出力フォーマットです。フォーマットは一重引用符 (') で囲みます。

出力フォーマットの長さは 10 バイト以上にする必要があります。以下は、出力のフォーマットです。

yyyy-Www-d

説明

yyyy

4 桁の年です。

ww

2 桁の週番号です (01 から 53)。

d

1 桁の曜日です (1 から 7)。d の値は、WEEKFIRST の設定に対応します。たとえば、WEEKFIRST が 2 または ISO2 (月曜日) の場合、出力では月曜日は 1、火曜日は 2 と表示されます。

EDIT 関数を使用して、この出力から個々のサブフィールドを抽出できます。

日付時間値から年と週番号を取得

次の例では、VIDEOTR2 データソースに対するリクエストで HYYWD を呼び出して、TRANSDATE 日付時間フィールドを ISO 標準フォーマットの日付と週番号に変換します。WEEKFIRST が ISO2 (月曜日) に設定され、ISO 標準の週番号が生成されます。

SET WEEKFIRST = ISO2
TABLE FILE VIDEOTR2
SUM TRANSTOT QUANTITY
COMPUTE ISODATE/A10 = HYYWD(TRANSDATE, 'A10');
BY TRANSDATE
WHERE QUANTITY GT 1
END

出力結果は次のとおりです。

TRANSDATE         TRANSTOT  QUANTITY  ISODATE   
---------         --------  --------  -------   
1991/06/24 04:43     16.00         2  1991-W26-1
1991/06/25 01:17      2.50         2  1991-W26-2
1991/06/27 02:45     16.00         2  1991-W26-4
1996/08/17 05:11      5.18         2  1996-W33-6
1998/02/04 04:11     12.00         2  1998-W06-3
1999/01/30 04:16     13.00         2  1999-W04-6
1999/04/22 06:19      3.75         3  1999-W16-4
1999/05/06 05:14      1.00         2  1999-W18-4
1999/08/09 03:17     15.00         2  1999-W32-1
1999/09/09 09:18     14.00         2  1999-W36-4
1999/10/16 09:11      5.18         2  1999-W41-6
1999/11/05 11:12      2.50         2  1999-W44-5
1999/12/09 09:47      5.18         2  1999-W49-4
1999/12/15 04:04      2.50         2  1999-W50-3

HYYWD によって返される日付から構成要素を抽出

次の例では、VIDEOTR2 データソースに対するリクエストで HYYWD を呼び出して、TRANSDATE 日付時間フィールドを ISO 標準フォーマットの日付と週番号に変換します。次に、EDIT 関数を使用して、この日付から週構成要素を抽出します。WEEKFIRST が ISO2 (月曜日) に設定され、ISO 標準の週番号が生成されます。

SET WEEKFIRST = ISO2
TABLE FILE VIDEOTR2
SUM TRANSTOT QUANTITY
COMPUTE ISODATE/A10 = HYYWD(TRANSDATE, 'A10');
COMPUTE WEEK/A2 = EDIT(ISODATE, '$$$$$$99$$');
BY TRANSDATE 
WHERE QUANTITY GT 1 AND DATE EQ 1991
END

出力結果は次のとおりです。

TRANSDATE         TRANSTOT  QUANTITY  ISODATE     WEEK
---------         --------  --------  -------     ----
1991/06/24 04:43     16.00         2  1991-W26-1  26
1991/06/25 01:17      2.50         2  1991-W26-2  26
1991/06/27 02:45     16.00         2  1991-W26-4  26