1

私はすべての月曜日を保存したテーブルを持っています。たとえば、(10 月 1 日、10 月 8 日、10 月 15 日、10 月 22 日、10 月 29 日)、その月の週を調べる必要があります。それ以降.. 9 月のカウンターは再び 1 から開始する必要があります。これは sql クエリを使用して実行できますか? データベースは oracle 10g ですか?

月の最初が水曜日に来る場合、その月の最初の月曜日は 1 としてマークする必要がありますが、2 番目の週は 1 としてマークする必要があります。

4

3 に答える 3

9
select to_char(your_date,'W') from dual;

やります。

分析するのに適した表は次のとおりです

これを証明する SQL Fiddle を次に示します。

于 2012-10-31T10:42:23.860 に答える
2

クエリに小さな変更が必要です。2014 年 6 月 1 日を確認すると、最初の週 = 2 と表示されます。以下のクエリを使用して確認してください。2017 年 1 月 1 日にも同じケースが適用されます

select to_date('06/01/2014','mm/dd/yyyy') curr_day, next_day(trunc(to_date('06/01/2014','mm/dd/yyyy'),'mm')-8 , 'sun') prev_week, trunc( (to_date('06/01/2014','mm/dd/yyyy')-next_day(trunc(to_date('06/01/2014','mm/dd/yyyy')) ),'mm')-8, 'sun'))/7 )+1 "週" デュアルから;

正しいクエリは次のとおりです。

select to_date('06/01/2014','mm/dd/yyyy') curr_day, next_day(trunc(to_date('06/01/2014','mm/dd/yyyy'),'mm')-7 , 'sun') prev_week, trunc( (to_date('06/01/2014','mm/dd/yyyy')-next_day(trunc(to_date('06/01/2014','mm/dd/yyyy')) ),'mm')-7, 'sun'))/7 )+1 "週" デュアルから;

于 2016-01-09T16:14:45.730 に答える
1

ソースhttp://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:7482139067917

select 
x,
next_day(trunc(x,'mm')-8, 'sun'),
trunc( (x-next_day(trunc(x,'mm')-8, 'sun'))/7 )+1 "week"
from t;

月曜日 'MON' から始まる週

確認できます SQL Fiddle

于 2013-03-13T11:37:43.533 に答える