web-dev-qa-db-ja.com

trunc(date、 'IW')は正確には何ですか?

私のプロジェクトでは、曜日と1 ... 7の値の間の絶対的な数値対応が必要です。

おそらくご存じのとおり、日と数字の関連付けはロケールによって異なります。たとえば、ドイツでは月曜日が1で日曜日が7であるのに対し、米国では月曜日が2で日曜日が1です。

だから、解決策を探して、私はロケールに関係なく機能しているように見える次のコードを見つけ、Monday = 1 ... Sunday = 7を割り当てました:

1 + TRUNC (date) - TRUNC (date, 'IW')

誰か私にそれがどのように機能するかを説明できますか?特に、私はこの命令が何であるか理解できません:

TRUNC (date, 'IW')

正確に。

11
Phate

TRUNC(DATE,'IW')は、週の最初の日を返します。私にとってTRUNC(SYSDATE,'IW)は月曜日を返します。今日は2月21日火曜日です。そのTRUNC(SYSDATE,'IW')を差し引くと、20日月曜日になります。121-20=1)。追加 1方程式の始めと同じように、その上に2、火曜日に関連付けます。

12
John

いつものように、これは ドキュメントで回答済み 、具体的には次のとおりです。

IW ISO週の最初の日、つまり月曜日と同じ曜日

6
Boneist

[〜#〜] iso [〜#〜]週の非常に基本的な概念は、それをNLS地域にすることです独立しています

ドキュメント から、

ISO標準に基づく年間通算週(1-52または1-53)。

1週間はMondayで始まり、Sundayで終わります。

3
Lalit Kumar B