我希望甲骨文以下列方式对待周:
- 星期一星期一开始 - 一年的第一周是从一年的第一天到下一个星期一
因此2015年将是
01-jan-2015(星期四)将是1
02-jan-2015(星期五)将是1
03-jan-2015(星期六)将是1
04-jan-2015(星期日)将是1年
05-jan-2015(星期一)将是2
06年1月6日(星期二)将是2年
2017年将是
01-jan-2017(星期日)将是1
02-jan-2017(星期一)将是2
03-jan-2017(星期二)将是2
04-jan-2017(星期三)将是2周
依旧......
我需要一年的数字,所以会到1到53-54
答案 0 :(得分:1)
使用ISO周日期标准:'iw'。
2014-01-01实际上是星期三,所以:
select
to_number(to_char(date'2014-01-05', 'iw')) as weeknum,
to_char(date'2014-01-05', 'Day') as day
from dual;
WEEKNUM DAY
----------- ---------
1 Sunday
select
to_number(to_char(date'2014-01-06', 'iw')) as weeknum,
to_char(date'2014-01-06', 'Day') as day
from dual;
WEEKNUM DAY
----------- ---------
2 Monday
答案 1 :(得分:1)
一些算术可能会做到这一点(假设d
是你的约会对象):
select TRUNC((case to_char(d, 'DY')
when 'MON' then 6
when 'TUE' then 5
when 'WED' then 4
when 'THU' then 3
when 'FRI' then 2
when 'SAT' then 1
when 'SUN' then 0
end + to_number(to_char(d, 'DDD'))-1) / 7)+1
from v;
case
语句将根据星期几构建一个偏移量请花一些时间来试验http://sqlfiddle.com/#!4/d41d8/38236以检查我是否犯了一个愚蠢的错误,因为我没有时间仔细测试它。对不起...