Oracle数据库日期求周技巧(oracle日期取周)

Oracle函数中提供了许多能够帮助操作日期和时间的方法。在某些情况下,在Oracle中查询需要表明特定日期当周的星期几,这时可以使用建立在Oracle数据库函数之上的日期求解技巧来完成这项工作。

查询日期所在周的星期几,可以采用以下步骤:

①先查询出“传入日期”所在周的第一天,也就是“星期一”;

SELECT NEXT_DAY( input_date, ‘MON’) as firstDay

FROM dual;

②用第一步查询出来的“星期一”,减去“传入的日期”的天数,结果就是“传入的日期”在本周的序号,如果小于0,则表示跨越两个周期,序号加7.

SELECT MOD(7-(TRUNC ( SYSDATE – NEXT_DAY( SYSDATE, ‘MON’ ))),7) as number FROM DUAL;

③用第二步查询出来的序号,和数字1 对应的 星期一 进行 CASE WHEN用法比较,当匹配成功, 就可以得出传入的日期在本周的星期几的值。

select

case

when MOD(7-(TRUNC ( SYSDATE – NEXT_DAY( SYSDATE, ‘MON’ ))),7) = 1 then ‘星期一’

when MOD(7-(TRUNC ( SYSDATE – NEXT_DAY( SYSDATE, ‘MON’ ))),7) = 2 then ‘星期二’

when MOD(7-(TRUNC ( SYSDATE – NEXT_DAY( SYSDATE, ‘MON’ ))),7) = 3 then ‘星期三’

when MOD(7-(TRUNC ( SYSDATE – NEXT_DAY( SYSDATE, ‘MON’ ))),7) = 4 then ‘星期四’

when MOD(7-(TRUNC ( SYSDATE – NEXT_DAY( SYSDATE, ‘MON’ ))),7) = 5 then ‘星期五’

when MOD(7-(TRUNC ( SYSDATE – NEXT_DAY( SYSDATE, ‘MON’ ))),7) = 6 then ‘星期六’

when MOD(7-(TRUNC ( SYSDATE – NEXT_DAY( SYSDATE, ‘MON’ ))),7) = 0 then ‘星期天’

else ‘非法序号’ END as weekVal

FROM DUAL;

以上是Oracle较为精准地查询出某天所在周的星期几的方法,其中,除了熟悉Oracle函数的用法外,还要加强对SQL语句中CASE WHEN语法的理解,以及在此基础上的合理的编写能力,从而准确地得出某天所在星期的结果。


数据运维技术 » Oracle数据库日期求周技巧(oracle日期取周)