ORACLE 如何实现根据这一年的第N周 获取第N周的第一天,最后一天的具体日期各位高手,帮帮忙吧!

ORACLE 如何实现根据这一年的第N周 获取第N周的第一天,最后一天的具体日期各位高手,帮帮忙吧!,第1张

select trunc(sysdate,'yyyy') - to_char(trunc(sysdate,'yyyy'),'d')-5 + :week 7 startweek,trunc(sysdate,'yyyy') - to_char(trunc(sysdate,'yyyy'),'d')+1 +:week 7 as endweek from dual;

:week 为第几周

设:

1、数据表名称为:TABLE1

2、TABLE1中的date字段名为:COLUMN1

获取去年到今年的上月底的数据的SQL如下:

select 

   from TABLE1 t

   where tCOLUMN1 >= add_months(trunc(sysdate,'YYYY'),-12)

      and tCOLUMN1 < trunc(sysdate,'MM')

Oracle中与时间有关的计算

[sql]

# sysdate+ /         加 小时

# sysdate+ / /      加 分钟

# sysdate+ / / /   加 秒钟

#

SQL> alter session set nls_date_format= yyyy MM dd hh :mi:ss ;

Session altered

SQL> select sysdate sysdate+ / sysdate+ / / sysdate+ / / / from dual;

SYSDATE             SYSDATE+ /         SYSDATE+ / /      SYSDATE+ / / /

: : : : : : : :

SQL> 获取本周第一天

SQL> select trunc(sysdate day ) from dual;

TRUNC(SYSDATE DAY

: :

SQL> 获取本周最后一天

SQL> select trunc(sysdate day ) + / / / from dual;

TRUNC(SYSDATE DAY

: :

SQL> 获取下周第 n 天

SQL> select trunc(next_day(sysdate )) trunc(next_day(sysdate )) from dual;

TRUNC(NEXT_DAY(SYSD TRUNC(NEXT_DAY(SYSD

: : : :

SQL>

SQL> 获取上月第一天

SQL> select trunc(add_months(sysdate ) month ) from dual;

TRUNC(ADD_MONTHS(SY

: :

SQL> select to_date(to_char(add_months(sysdate ) yyyy MM ) yyyy MM ) from dual;

TO_DATE(TO_CHAR(ADD

: :

SQL> 获取本月第一天

SQL> select trunc(sysdate month ) from dual;

TRUNC(SYSDATE MONT

: :

SQL> select to_date(to_char(sysdate yyyy MM ) yyyy MM ) from dual;

TO_DATE(TO_CHAR(SYS

: :

SQL> 获取本月最后一天

SQL> select trunc(last_day(sysdate)) + / / / from dual;

TRUNC(LAST_DAY(SYSD

: :

SQL> select add_months(trunc(sysdate month ) ) / / / from dual;

ADD_MONTHS(TRUNC(SY

: :

SQL>

SQL> 获取本季度第一天

SQL> select trunc(sysdate Q ) from dual;

TRUNC(SYSDATE Q )

: :

SQL> 获取本季度最后一天

SQL> select add_months(trunc(sysdate Q ) ) / / / from dual;

ADD_MONTHS(TRUNC(SY

: :

SQL>

SQL> 获取去年第一天(因为闰年平年天数不一样 所以不能使用加减 或 天 来计算年份)

SQL> select trunc(trunc(sysdate year ) year ) from dual;

TRUNC(TRUNC(SYSDATE

: :

SQL> 获取今年第一天

SQL> select trunc(sysdate year ) from dual;

TRUNC(SYSDATE YEAR

: :

SQL> select to_date(to_char(sysdate yyyy )|| yyyy MM dd ) from dual;

TO_DATE(TO_CHAR(SYS

: :

SQL> 获取今年最后一天

SQL> select trunc(add_months(sysdate ) year ) / / / from dual;

TRUNC(ADD_MONTHS(SY

: :

SQL> select to_date(to_char(sysdate yyyy )|| : : yyyy MM dd hh :mi:ss ) from dual;

TO_DATE(TO_CHAR(SYS

: :

SQL>

SQL> 计算相差的天数

SQL> select round(to_number(to_date( : : yyyy MM dd hh :mi:ss ) to_date( : : yyyy MM dd hh :mi:ss ))) value from dual;

VALUE

SQL> 计算相差的小时数

SQL> select round(to_number(to_date( : : yyyy MM dd hh :mi:ss ) to_date( : : yyyy MM dd hh :mi:ss )) ) value from dual;

VALUE

SQL> 计算相差的分钟数

SQL> select round(to_number(to_date( : : yyyy MM dd hh :mi:ss ) to_date( : : yyyy MM dd hh :mi:ss )) ) value from dual;

VALUE

lishixinzhi/Article/program/Oracle/201311/18017

本文章某周第几天按照中国人习惯如第一天是星期一和第七天是星期日,其中星期一和星期日具体是那一天如哪年哪月哪日?

1求出本星期的第一天日期(以星期一为第一天) 请输入占位符

select trunc(sysdate,'DD')-to_char(sysdate,'D')+2-(to_number(to_char(sysdate,'IW'))-&week)7 from dual;

2求出本星期的第七天日期(以星期日为第七天)

select trunc(sysdate,'DD')-to_char(sysdate,'D')+8-(to_number(to_char(sysdate,'IW'))-&week)7 from dual;

补充完整某年的第几周的第1天和最后一天。

/

获得某年某周的第一天

P_YEAR Number --年份

P_WEEKLY Number --第几周

X_START_DATE Date --某周的第一天

X_END_DATE Date --某周的最后一天

/

procedure getWeeklyDateRang(P_YEAR Number,

P_WEEKLY Number,

X_START_DATE In Out Date,

X_END_DATE In Out Date) Is

v_Year Number := P_YEAR; --输入年份

v_Weekly Number := P_WEEKLY; --第几第

v_CurrData Date := Trunc(Sysdate);

v_CurrWeekly Number := To_Number(To_Char(v_CurrData, 'IW'));

v_DiffYear Number;

v_WeeklyStart Date; --某周第一天

v_WeeklyEnd Date; --某周最后一天

Begin

v_DiffYear := To_Number(To_Char(v_CurrData, 'YYYY')) - v_Year;

If (v_Weekly > v_CurrWeekly And v_DiffYear >= 0) Then

v_CurrWeekly := v_CurrWeekly + (v_DiffYear + 1) 52;

End If;

v_WeeklyStart := (trunc(v_CurrData, 'DD') - to_char(v_CurrData, 'D') + 1 -

(v_CurrWeekly - v_Weekly) 7) ;

v_WeeklyEnd := (trunc(v_CurrData, 'DD') - to_char(v_CurrData, 'D') + 7 -

(v_CurrWeekly - v_Weekly) 7) ;

X_START_DATE := v_WeeklyStart;

X_END_DATE := v_WeeklyEnd;

End getWeeklyDateRang;

以上就是关于ORACLE 如何实现根据这一年的第N周 获取第N周的第一天,最后一天的具体日期各位高手,帮帮忙吧!全部的内容,包括:ORACLE 如何实现根据这一年的第N周 获取第N周的第一天,最后一天的具体日期各位高手,帮帮忙吧!、oracle如何获取去年全年的数据和今年到上个月为止的数据、Oracle中与时间有关的计算等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存