当月月至今:
select trunc(sysdate(-1), 'MM') --当月的1号
select sysdate(-1) --昨天
dt between trunc(sysdate(-1), 'MM') and sysdate(-1)
如果要求同比,就要取去年月至今:
select add_months(trunc(sysdate(-1), 'MM'),-12) --去年当月的1号
select add_months(sysdate(-1),-12) --去年昨日
--注意add_months的使用,巧妙使用该函数可以得到上一个月,上一年的的某一天
环比,求上一个月月至今:
select add_months(trunc(sysdate(-1), 'MM'),-1) --上个月的1号
select add_months(sysdate(-1),-1) --上个月的昨日
取上周的周一周日或者特定的周几可用date_sub函数或者next_day函数:
--第一种方法,应用date_sub函数,date_sub(日期,天数),即日期往前天数的日期
select date_sub(sysdate(0), week(sysdate(0)) - 1)
--这里可以妙用date_sub函数,上上周的周一的日期,就可以再嵌套一层
select date_sub(date_sub(sysdate(0), week(sysdate(0)) - 1), 7) --往前推7天
--第二种方法,应用next_day 函数
select next_day(sysdate(-14), 'Monday') --上周一,如果要去上上周一,改为sysdate(-21)即可
select next_day(sysdate(-8), 'Sunday') --上周日,如果要去上上周日,改为sysdate(-15)即可
取某一天是一年的第几周:
--取昨天是今年的第几周
select WeekOfYear(sysdate(-1))