我有桌子,我已经存储了所有星期一,例如(第一个八月,八月八日,十五月十八日,十二月二十八日,二十九日),我需要找出那个月的那个星期,就像第一个八月一样,它将是1, 8月8日和之后..对于Sept计数器应该再次从1开始。这可以通过sql查询完成,数据库是oracle 10g吗?
如果每个月的第一个星期三到来,那个月的第一个星期一应该标记为1,它的第二周但需要为1。
答案 0 :(得分:8)
答案 1 :(得分:2)
查询中需要进行小的更改,请检查2014年6月1日,它显示为第一周= 2.使用以下查询进行检查。同样的情况适用于2017年1月1日
选择 to_date(' 06/01 / 2014',' mm / dd / yyyy')curr_day, next_day(trunc(to_date(' 06/01 / 2014',' mm / dd / yyyy'),' mm') - 8,' sun& #39;)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"周" 来自双重;
正确的查询应为:
选择 to_date(' 06/01 / 2014',' mm / dd / yyyy')curr_day, next_day(trunc(to_date(' 06/01 / 2014',' mm / dd / yyyy'),' mm') - 7,' sun& #39;)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"周" 来自双重;
答案 2 :(得分: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