在日常工作中经常用到的SQL日期函数总结

当月月至今:

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)) 

 

你可能感兴趣的:(sql,sql)