详细讲解Oracle数据库的“周数计算”

详细讲解Oracle数据库的“周数计算”,第1张

——日期计算 算第n周的第一天及最后一天是几号 by keynes

================================================

—— ww的算法为每年 月 日为第一周开始 date+ 为每一周结尾

—— 例如 为第一周的第一天 而第一周的最后一天为 + =

—— 公式 每周第一天 date + 周

—— 每周最后一天 date + 周

你会发现怎么编排格式都会跑掉

=========================================================================

——日期计算 算第n周的第一天及最后一天是几号 by keynes

=========================================================================

—— ww的算法为每年 月 日为第一周开始 date+ 为每一周结尾

—— 例如 为第一周的第一天 而第一周的最后一天为 + =

—— 公式 每周第一天 date + 周

—— 每周最后一天 date + 周

—— 如果以ww格式为主 第 周的起迄如下

asdb WF>select to_date( yyyymmdd ) + to_date( yyyymmdd ) + from dual

TO_DATE( TO_DATE(

JAN JAN

asdb WF>select to_date( yyyymmdd ) + to_date( yyyymmdd ) + from dual

TO_DATE( TO_DATE(

APR APR

Elapsed

—— 验证如下

asdb WF>select to_char(to_date( yyyymmdd ) ww ) as weekn to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as weekn from dual

WEEK WEEK WEEK WEEK

Elapsed

asdb WF>

—— iw的算法为星期一至星期日算一周 且每年的第一个星期一为第一周

—— 例如 为星期六 所以用iw的算法是前年的 周 而 之后才是第一周的开始

—— 公式 每周第一天 next_day(date) + 周

—— 每周最后一天 next_day(date) + 周

—— 如果以iw格式为主 第 周的起迄如下

asdb WF>select next_day(to_date( yyyymmdd ) MONDAY )+ as first_day next_day(to_date( yyyymmdd ) MONDAY )+ as last_day from dual

FIRST_DAY LAST_DAY

JAN JAN

Elapsed

asdb WF>

asdb WF>select next_day(to_date( yyyymmdd ) MONDAY )+ as first_day next_day(to_date( yyyymmdd ) MONDAY )+ as last_day from dual

FIRST_DAY LAST_DAY

APR MAY

Elapsed

asdb WF>

—— 验证如下

asdb WF>select to_char(to_date( yyyymmdd ) iw ) as weekn to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as weekn from dual

WEEK WEEK WEEK WEEK

Elapsed

其它

——== 查今天是 本月 的第几周

SELECT TO_CHAR(SYSDATE WW ) TO_CHAR(TRUNC(SYSDATE MM ) WW ) + AS weekOfMon from dual

SELECT TO_CHAR(SYSDATE W ) AS weekOfMon from dual

——== 查今天是 今年 的第几周

select to_char(sysdate ww ) from dual

select to_char(sysdate iw ) from dual

附注

上文所提之iw及ww格式在doc内解释如下

IW = Week of year ( or ) based on the ISO standard

WW = Week of year ( ) where week starts on the first day of the year and continues to the seventh day of the year

lishixinzhi/Article/program/Oracle/201311/18798

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

语句如下:

select sysdate from dual;

结果:

如果只获取日期部分:

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

结果:

1获取系统的当前时间

date类型的:

selectsysdatefromdual;

2char类型的:

selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')fromdual;

3函数在ORACLE中获取年、季度、月、周、日的时间

selectto_char(sysdate,'yyyy')fromdual;--年

selectto_char(sysdate,'MM')fromdual;--月

selectto_char(sysdate,'dd')fromdual;--日

selectto_char(sysdate,'Q')fromdual;--季

selectto_char(sysdate,'iw')fromdual;--周--按日历上的那种,每年有52或者53周

4日期 *** 作,如下图

当前时间减去7分钟的时间

selectsysdate,sysdate-interval'7'MINUTEfromdual;

当前时间减去7小时的时间

selectsysdate-interval'7'hourfromdual;

当前时间减去7天的时间

selectsysdate-interval'7'dayfromdual;

当前时间减去7月的时间

selectsysdate,sysdate-interval'7'monthfromdual;

当前时间减去7年的时间

selectsysdate,sysdate-interval'7'yearfromdual;

时间间隔乘以一个数字

selectsysdate,sysdate-8interval'7'hourfromdual;

select to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyiw') as week, --oracle求当年的第几周

to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyww') as week2, --oracle求当年的第几周

to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyy') as year, --oracle求第几年

to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyymm') as month, --oracle求当年的第几月

to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyddd') as day, --oracle求当年的第几天

to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyq') as quarter -- oracle求当年的第几季度

from dual

-----------

SELECT

to_char(sysdate,'day') 星期几,

to_char(SYSDATE,'ddd') 第几天,

to_char(SYSDATE,'ww') 第几周,

to_char(SYSDATE,'mm') 第几月,

to_char(SYSDATE,'q') 第几季

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号, 刚好是星期日的  特殊情况!!!

使用sql语句查询日期在一周内的数据 select from ShopOrder where datediff(week,ordTime,getdate()-1)=0 //查询当天日期在一周年的数据 select from ShopOrder where datediff(day,ordTime,getdate()-1)=0 //查询当天的所有数据 SELECT F

以上就是关于详细讲解Oracle数据库的“周数计算”全部的内容,包括:详细讲解Oracle数据库的“周数计算”、oracle 获取日期、oracle中得到当前系统时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存