day、last_day、eomonth、trunc、date_trunc、dateadd
一、返回指定日期的日的部分(day)
ORACLE:to_char(date,format)、to_number(char)
select first_name,hire_date,to_number(to_char(hire_date,'dd'))day from employees order by employee_id;
SQLSERVER:day(date|char)
SELECT DAY('2021-12-27')test1,DAY('2021-12-01')test2
二、返回指定日期对应月份的最后一天
ORACLE:last_day(date)
SELECT LAST_DAY(TO_DATE('20210201','YYYYMMDD'))TEST1,LAST_DAY(TO_DATE('20211201','YYYYMMDD'))TEST2 FROM DUAL
SQLSERVER:eomonth
select eomonth('20220201')当月最后一天,eomonth('20220201',2)后两个月最后一天,eomonth('20220201',-2)前两个月最后一天
三、返回指定时间的下一星期几(第二个参数只能使用英文,英文的星期天到星期六)
select next_day(sysdate,'mon'), next_day(sysdate,'sun') from dual;
四、截取指定日期并返回相应的日期
ORACLE:trunc,返回当月第一天
select hire_date,trunc(hire_date,'mm')trunc from employees order by employee_id;
SQLSERVER:getdate()获取系统当前时间,day()获取月份的天,dateadd(datepart,num,date)向指定日期date增加指定部分datepart的num值。
datepart类型:year(yy/yyyy)、quarter(qq/q)、Month(mm/m)、day(dd/d)、Hour(hh/h)、minute(mi,n)、second(ss,s)
select getdate()当前,dateadd(yy,1,getdate())加一年,dateadd(mm,1,getdate())加一个月,dateadd(dd,1,getdate())加一天 select dateadd(dd,-day(getdate())+1,getdate()) //方法一:将当前时间减去(当前时间在当月的天数+1),得到当月第一天 select dateadd(mm,datediff(mm,0,getdate()),0) //方法二:计算当前月份与 1900 年相差的月份数,然后通过计算1900-1-1加上相差的月份数的日期即为当月第一天
postgreSQL:date_trunc
select now(),date_trunc('year',now())ytest,date_trunc('month',now())mtest; //参数是year,返回当年第一天;参数是month,返回当月第一天
五、日期加减,加年、月、天数
ORACLE:add_months()
参考连接:https://www.cnblogs.com/muhai/p/15435679.html
SQLSERVER:dateadd()
select getdate()当前,dateadd(yy,1,getdate())加一年,dateadd(mm,1,getdate())加一个月,dateadd(dd,1,getdate())加一天,dateadd(hh,1,getdate())加一个小时,dateadd(mi,1,getdate())加一分
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下