我有一张桌子,我已经存储了所有星期一,例如(10 月 1 日、10 月 8 日、10 月 15 日、10 月 22 日、10 月 29 日),我需要找出那个月的星期,就像 10 月 1 日一样,它将是 1、10 月 8 日 2此后.. 9 月计数器应再次从 1 开始。这可以通过sql查询来完成吗,数据库是oracle 10g?
如果本月的第一个星期一即将到来,则该月的第一个星期一应标记为 1,其第二周但需要标记为 1。
我有一张桌子,我已经存储了所有星期一,例如(10 月 1 日、10 月 8 日、10 月 15 日、10 月 22 日、10 月 29 日),我需要找出那个月的星期,就像 10 月 1 日一样,它将是 1、10 月 8 日 2此后.. 9 月计数器应再次从 1 开始。这可以通过sql查询来完成吗,数据库是oracle 10g?
如果本月的第一个星期一即将到来,则该月的第一个星期一应标记为 1,其第二周但需要标记为 1。
查询中需要稍作更改,检查 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 , '太阳') 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 "week" from dual;
正确的查询应该是:
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 "week" from dual;
来源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