1

我有一张桌子,我已经存储了所有星期一,例如(10 月 1 日、10 月 8 日、10 月 15 日、10 月 22 日、10 月 29 日),我需要找出那个月的星期,就像 10 月 1 日一样,它将是 1、10 月 8 日 2此后.. 9 月计数器应再次从 1 开始。这可以通过sql查询来完成吗,数据库是oracle 10g?

如果本月的第一个星期一即将到来,则该月的第一个星期一应标记为 1,其第二周但需要标记为 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 日

选择 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;

于 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 回答