ORACLE 如何获取前一星期的日期

ORACLE 如何获取前一星期的日期,第1张

SELECT to_char(SYSDATE,'yyyymmdd')-to_number(to_char(SYSDATE,'d')-1)-6,to_char(SYSDATE,'yyyymmdd')-to_number(to_char(SYSDATE,'d')-1) from dual

select case

when mod(1 + 7 - to_char(trunc(sysdate, 'MM'), 'D'), 7) +

trunc(sysdate, 'MM') + 28 - last_day(sysdate) > 0 then

0

else

1

end + 4

from dual

把其中sysdate替换为你的日期即可

如果想知道一个月有几个星期一,把mod括号中第一个1改为2即可,其他日期类推

具体你的周是怎么确定的?

select to_char(to_date('20090101','yyyymmdd')+rownum+7,'iw') column_name from dual connect by rownum<=to_date('20111201','yyyymmdd')-to_date('20090101','yyyymmdd')

思路:

1 用以上语句生成月份表(具体参数自己调一下)

2 然后和你要统计的表进行外连接,不存在的就是null ,用nvl(null,0) 表示统计数据为0

参考:

oracle中如何获取中文的周数

默认oracle中,通过

select to_char(sysdate,'ww'),to_char(sysdate,'yyyy') from dual可以获取到ORACLE的周数,但是这个给的周数以及年数是按照每年的第一天为第一周的算法,和我们平常的计算方法不一样,平常的算法是按照星期来计算的,经过查找资料,to_char提供了新的参数:如下:

select to_char(sysdate,'iw'),to_char(sysdate,'iyyy') from dual

这个是按照IW = Week of year (1-52 or 1-53) based on the ISO standard

通常的ww是按照WW = Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year

比如2008年12月31日,按照不同的查询方式的查询结果如下:

select to_char(to_date('2008-12,31', 'yyyy-mm-dd'), 'ww') ww,

to_char(to_date('2008-12,31', 'yyyy-mm-dd'), 'yyyy') yyyy

from dual

查询结果

序号 周 年度

1 53 2008

select to_char(to_date('2008-12,31', 'yyyy-mm-dd'), 'iw') iw,

to_char(to_date('2008-12,31', 'yyyy-mm-dd'), 'iyyy') iyyy

from dual

oracle中最简单获取日期的方式是通过查询sysdate来获取。

语句如下:

select sysdate from dual;

结果:

如果只获取日期部分:

select to_char(sysdate,'yyyy-mm-dd') from dual;

结果:

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 如何获取前一星期的日期全部的内容,包括:ORACLE 如何获取前一星期的日期、oracle中怎么获取当前月有几个星期天啊、oracle,给定一段时间,按时间(周)统计数据记录条数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9829134.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存