与えられた日付式で、その年の週を 1 から 53 までの整数値として返す、スカラ日付/時刻関数です。
Synopsis
{fn WEEK(date-expression)}
引数
date-expression 列の名前や、他のスカラ関数の結果、または日付やタイムスタンプ・リテラルである式
概要
WEEK は、日付整数または日付/時刻文字列を受け取り、その日付に対するその年の始めからの週の数を返します。週は、$HOROLOG 日付 (1840 年 12 月 31 日からの日数) を使用して計算されます。したがって、週は年と年をまたいでカウントされ、Week 1 は前年の最後の週から開始された 7 日間を終了した日々となります。したがって、週は常に日曜日から始まり、暦年の最初の日曜日は、Week 1 から Week 2 への切り替えを意味します。その年の最初の日曜日が 1 月 1 日である場合、その日曜日は Week 1 に入ります。その年の最初の日曜日が 1 月 1 日より後の場合、その日曜日は Week 2 の第 1 日目になります。このため、Week 1 は、一般的には、7 日間より短くなります。 DAYOFWEEK 関数を使用すると、週の曜日を決定できます。
1 年の週の合計数は、一般的に 53 です。うるう年には 54 になります。
DATEPART または DATENAME 関数を使用しても、DAYOFWEEK と同じ週情報が返されます。
以下のメソッド・コールを使用することで、Caché ObjectScript からこの関数を呼び出すこともできます。
$SYSTEM.SQL.WEEK(date-expression)
日付の検証
WEEK は、入力値に対して以下のチェックを実行します。値がチェックに失敗した場合は、NULL 文字列が返されます。
以下の埋め込み SQL の例は、2005 年 1 月 2 日 (日曜日) と 2006 年 1 月 1 日 (日曜日) の週の曜日と通算週を返します。
  SET x="2005-1-2"
  SET y="2006-1-1"
  &sql(SELECT {fn DAYOFWEEK(:x)},{fn WEEK(:x)},
       {fn DAYOFWEEK(:y)},{fn WEEK(:y)}
  INTO :a,:b,:c,:d
  FROM Sample.Person)
  WRITE !,"Error code=",SQLCODE
  WRITE !,"2005 Day of Week is: ",a," (Sunday=1)"
  WRITE " Week of Year is: ",b
  WRITE !,"2006 Day of Week is: ",c," (Sunday=1)"
  WRITE " Week of Year is: ",d
以下の例は、与えられた日付が 2004 年の第 9 週目にあたるので、9 を返します。
SELECT DISTINCT {fn WEEK('2004-02-25')} AS Week
FROM Sample.Person
SELECT DISTINCT {fn WEEK('2004-02-25 08:35:22')} AS Week
FROM Sample.Person
SELECT DISTINCT {fn WEEK(59590)} AS Week
FROM Sample.Person
以下の例は、54 を返します。これは、この例のすぐ後に続く例で示されているように、この特定の日付が 2 日目に開始する Week 2 で始まるうるう年にあるためです。
SELECT DISTINCT {fn WEEK('2000-12-31')} AS Week
FROM Sample.Person
SELECT DISTINCT 
{fn WEEK('2000-01-01')}||{fn DAYNAME('2000-01-01')} AS WeekofDay1,
{fn WEEK('2000-01-02')}||{fn DAYNAME('2000-01-02')} AS WeekofDay2
FROM Sample.Person
以下の例は、現在の週を返します。
SELECT DISTINCT {fn WEEK({fn NOW()})} AS Week_Now
FROM Sample.Person
SELECT DISTINCT {fn WEEK(CURRENT_DATE)} AS Week_Now
FROM Sample.Person
SELECT DISTINCT {fn WEEK(CURRENT_TIMESTAMP)} AS Week_Now
FROM Sample.Person
関連項目
DATEPART DATENAME DAYOFWEEK MONTH QUARTER YEAR