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())加一分

 

posted @ 2022-01-11 15:22  微风徐徐$  阅读(222)  评论(0编辑  收藏  举报