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

本文详细介绍如何使用SQL进行日期操作,包括获取当月、上月、去年同月的起止日期,以及利用date_sub和next_day函数获取上周的周一周日日期。此外,还介绍了如何查询某一天是一年的第几周。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当月月至今:

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值