Oracle:获取当前日期的上个月的第一天和最后一天(to_char、trunc、add_months、last_day)
1 | select to_char(trunc(add_months(sysdate,- 1 ), 'mm' ), 'yyyymmdd' ) first_day,to_char(last_day(add_months(sysdate,- 1 )), 'yyyymmdd' ) last_day from dual; |
oracle不区分大小写,MM和mm效果一样。
一.to_char()函数
to_char()函数:可以将日期按照一定格式转换为字符串类型
与to_char()函数相反的则是to_date()函数,可以将字符串类型转换为日期类型。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | select to_char(sysdate, 'yyyy' ) as nowYear from dual; --获取时间的年 2016 select to_char(sysdate, 'mm' ) as nowMonth from dual; --获取时间的月 09 select to_char(sysdate, 'dd' ) as nowDay from dual; --获取时间的日 07 select to_char(sysdate, 'hh24' ) as nowHour from dual; --获取时间的时 10 select to_char(sysdate, 'mi' ) as nowMinute from dual; --获取时间的分 33 select to_char(sysdate, 'ss' ) as nowSecond from dual; --获取时间的秒 11 select to_char(sysdate, 'day' ) as nowDay from dual; --获取当天是星期几 星期三 select to_char(sysdate, 'D' ) as nowDay from dual; --获取当天是星期几 4 select floor(sysdate - to_date( '2016-08-05' , 'yyyy-mm-dd' )) from dual; --取两个日期间的天数 33 |
二.trunc()函数
trunc()函数两种用法,截断数字或者是截断日期。
1.截断数字:格式:TRUNC(n1,n2),n1表示被截断的数字,n2表示要截断到那一位。n2可以是负数,表示截断小数点前。注意,TRUNC截断不是四舍五入。
2.截断日期:
1 2 3 4 5 | 截取今天:select sysdate,trunc(sysdate, 'dd' ) from dual 截取本周第一天:select sysdate,trunc(sysdate, 'd' ) from dual 截取本月第一天:select sysdate,trunc(sysdate, 'mm' ) from dual 截取本年第一天:select sysdate,trunc(sysdate, 'y' ) from dual 。。。。 |
三.add_months()函数
add_month(n1,n2),n1表示日期格式数据,n2表示对日期加减的数字(以月为单位)
1 | 获取上个月的今天:select add_months(sysdate,- 1 ) from dual |
四.last_day()函数
last_day()函数返回指定日期对应月份的最后一天
1 | 获取当前日期的最后一天:SELECT last_day(SYSDATE) FROM dual |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix