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语法的理解,以及在此基础上的合理的编写能力,从而准确地得出某天所在星期的结果。
编辑:一起学习网
标签:星期,日期,序号,函数,某天