Sybase:获取本月最后一天的日期的实现方法

Sybase:获取本月最后一天的日期的实现方法

Oracle中查询月底那天的日期的函数为:last_day()。 在ASE中没有对应的函数,在Oracle移植到Sybase的时候,需要手动编写函数来实现,幸亏ASE15.0.2后开始支持自定义函数。

下面提供3种实现查询本月最后一天的日期的SQL语句:

方法一:

select dateadd(dd,-1,convert(char(8),(datepart(yy,dateadd(mm,1,getdate()))*10000+datepart(mm,dateadd(mm,1,getdate()))*100+01))) 
--输出:2017-05-31 00:00:00.000

方法二:

select dateadd(dd,-1, convert(datetime,left(convert(varchar, dateadd(mm,1,getdate()) ,112),6) + '01') )
--或者这样写:
select dateadd(dd,-1,  left(convert(varchar, dateadd(mm,1,getdate()) ,112),6) + '01'  )
--输出:2017-05-31 00:00:00.000

方法三:

SELECT DATEADD(DD, -DAY(DATEADD(MM, 1, getdate() )), DATEADD(MM, 1, getdate() ))  
--输出:2017-05-31 01:34:58.071

 

改进成类似Oracle中的last_day()的函数如下:

方法一:

create function last_day(@d datetime)
returns datetime
as
begin
declare @rtndate datetime
select @rtndate = dateadd(DD,-day(dateadd(MM,1,@d)),dateadd(MM,1,@d) )
return @rtndate
end

方法二:

create function dbo.last_day2(@current_date datetime)
returns datetime
as
begin
  return dateadd(dd,-1, left(convert(varchar, dateadd(mm,1,@current_date) ,112),6) + '01'  )
end

调用过程:

--示例1:
select dbo.last_day(getdate()) ,dbo.last_day2(getdate() )

--示例2:
select dbo.last_day('19991231') ,dbo.last_day2('19991231' )

 

 

 

转载于:https://www.cnblogs.com/lizm166/p/8618182.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值