私のプロジェクトでは、曜日と1 ... 7の値の間の絶対的な数値対応が必要です。
おそらくご存じのとおり、日と数字の関連付けはロケールによって異なります。たとえば、ドイツでは月曜日が1で日曜日が7であるのに対し、米国では月曜日が2で日曜日が1です。
だから、解決策を探して、私はロケールに関係なく機能しているように見える次のコードを見つけ、Monday = 1 ... Sunday = 7を割り当てました:
1 + TRUNC (date) - TRUNC (date, 'IW')
誰か私にそれがどのように機能するかを説明できますか?特に、私はこの命令が何であるか理解できません:
TRUNC (date, 'IW')
正確に。
TRUNC(DATE,'IW')
は、週の最初の日を返します。私にとってTRUNC(SYSDATE,'IW)
は月曜日を返します。今日は2月21日火曜日です。そのTRUNC(SYSDATE,'IW')
を差し引くと、20日月曜日になります。1
(21-20=1
)。追加 1
方程式の始めと同じように、その上に2
、火曜日に関連付けます。
いつものように、これは ドキュメントで回答済み 、具体的には次のとおりです。
IW ISO週の最初の日、つまり月曜日と同じ曜日
[〜#〜] iso [〜#〜]週の非常に基本的な概念は、それをNLS地域にすることです独立しています。
ドキュメント から、
ISO標準に基づく年間通算週(1-52または1-53)。
1週間はMondayで始まり、Sundayで終わります。