oracle如何取周一 oracle取周的第一天

oracle如何得到一个日期是星期几?

1、首先可以直接用datepart函数,第一个参数设置成weekday就可以了。

在西峡等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站建设、成都网站制作 网站设计制作定制网站建设,公司网站建设,企业网站建设,品牌网站制作,成都全网营销,成都外贸网站制作,西峡网站建设费用合理。

2、得到的结果是这一天是这周的第几天,注意星期日是第一天。

3、可以看到去掉星期日就是日期的星期几了。

4、然后在实际使用的时候就可以直接减去1就可以了。

5、另外datepart第二个参数也可以直接放getdate。

6、最后得到的结果也是需要的日期。

Oracle SQL 获取本月内的所有周一

最近遇到业务需求,需要按周统计数据。

思考再三想到可以使用每周周一来计算。

故写出如下获得系统当前月份所有周一的语句。

select * from (

--转化成周一去重

select distinct trunc(t.day,'iw') as mon from (

--获取本月所有日期集合

SELECT trunc(sysdate, 'mm') + LEVEL - 1 DAY

FROM DUAL

CONNECT BY trunc(sysdate, 'mm') + LEVEL - 1 =

last_day(trunc(sysdate))

)t

)a

--移除非本月的周一

where trunc(a.mon, 'mm') =  trunc(sysdate, 'mm')

ORDER BY MON

注:

trunc(sysdate,'iw') 语句可以获取本周周一的日期 (date类型)

trunc(sysdate,'iw') +1 可以获取本周周二的日期。

以此类推

(可以把sysdate换成其它时间)

oracle怎么查询上周的数据(例如今天是周日,我要查询出上个周一到周日的数据)

--1、取某天在本周中的第几天(默认周日开始算第1天)

select to_char(to_date('2011-04-11','yyyy-mm-dd'), 'd') from dual;

--2、如果要从周一开始算第1天,需要做一些手脚

--大概思路是:1变成7,2变成1,3变成2......,7变成6

select decode(to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd'),

1,

7,

to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd') - 1)

from dual;

--3、再根据上面的结论倒推到上周时间

select to_date('2011-04-04', 'yyyy-mm-dd') -

decode(to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd'),

1,

7,

to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd') - 1) - 7 + 1,

to_date('2011-04-04', 'yyyy-mm-dd') -

decode(to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd'),

1,

7,

to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd') - 1) - 7 + 1 + 6

from dual;

oracle 获取某个月第一个星期日

SQL select 

2    CASE 

3      WHEN TO_CHAR(to_date('201207','yyyymm'), 'D') = '1' 

4        THEN to_date('201207','yyyymm')

5      ELSE

6        next_day(to_date('201207','yyyymm'),'星期日') 

7      END  AS  "第一个星期日"

8  from 

9    dual;

第一个星期

----------

2012-07-01

SQL 

SQL select 

2    CASE 

3      WHEN TO_CHAR(to_date('201208','yyyymm'), 'D') = '1' 

4        THEN to_date('201208','yyyymm')

5      ELSE

6        next_day(to_date('201208','yyyymm'),'星期日') 

7      END  AS  "第一个星期日"

8  from 

9    dual;

第一个星期

----------

2012-08-05

CASE  WHEN  主要为了解决  当月1号, 刚好是星期日的  特殊情况!!!

oracle问题,请教大家,我想要取一个日期区间内的所有周一,二。。。周日,sql怎么下

select b.day,b.dd,sum(b.flag) over(partition by b.dd) as dd_sum

from

(select a.day,to_char(a.day,'day') as dd, 1 as flag

from

(SELECT TO_DATE('20130118', 'YYYY-MM-DD') + LEVEL - 1 DAY

FROM DUAL

CONNECT BY TO_DATE('20130118', 'YYYY-MM-DD') + LEVEL - 1 =

TO_DATE('20130209', 'YYYY-MM-DD')

) a

) b

group by b.day


网页标题:oracle如何取周一 oracle取周的第一天
地址分享:http://ybzwz.com/article/hiocij.html