SQL server的几个取日期函数

 1)
CREATE FUNCTION GetYearFristDay(@yourDate  varchar(10))  --本年初日期
RETURNS varchar(10)
AS 
BEGIN
 declare @getDate  datetime,@getDateYear  int,@returnDate datetime
 set @getDate=cast(@yourDate as datetime)
 set @getDateYear=year(@getDate)   --传入日期年份
 set @returnDate=cast(str(@getDateYear)+'-'+'01'+'-01' as datetime)   --本年初日期
 return convert(varchar(10),@returnDate,120)
END

2)
CREATE FUNCTION GetPreYearSameDay(@yourDate  varchar(10))  --上年同期日期  上年同月末天数小于现在天数按最后一天计算
RETURNS varchar(10)
AS 
BEGIN
 declare @getDate  datetime,@getDateYear  int,@getDateMonth  int,@getDateDay int,@returnDate datetime,@returnDateYear int,@returnDateMonth int,@returnDateDay int
 set @getDate=cast(@yourDate as datetime)
 set @getDateYear=year(@getDate)   --传入日期年份
 set @getDateMonth=month(@getDate)   --传入日期月份
 set @getDateDay=day(@getDate)   --传入日期天

 set @returnDate=DateAdd(m,1,@getDate)  --取得下月日期

 set @returnDate=cast(str(year(@returnDate)-1)+'-'+str(month(@returnDate))+'-'+'01' as datetime)-1  --取得去年同月的最后一天日期

 set @returnDateYear=year(@returnDate)   --去年同月 年份
 set @returnDateMonth=month(@returnDate)   --去年同月 月份
 set @returnDateDay=day(@returnDate)   --去年同月最后一天  天

 if @getDateDay>@returnDateDay   --传入日期天数大于去年同月末天数 返回去年同月最后一天
  begin
   set  @returnDate=@returnDate
  end
 else
  begin
   set @returnDate=cast(str(@returnDateYear)+'-'+str(@returnDateMonth)+'-'+str(@getDateDay) as datetime)
  end
 return convert(varchar(10),@returnDate,120)
END


3)
CREATE FUNCTION GetPreSomeDate(@yourDate  varchar(10),@PreDays int)  --取 前 几天 日期
RETURNS varchar(10)
AS 

BEGIN
 declare @getDate  datetime,@returnDate datetime

 set @getDate=cast(@yourDate as datetime)
 set @returnDate=@getDate-@PreDays
 return convert(varchar(10),@returnDate,120)
END

4)
CREATE FUNCTION GetPreMonthSameDay(@yourDate  varchar(10))  --上月同期日期  上月末天数小于现在天数按最后一天计算
RETURNS varchar(10)
AS 

BEGIN
 declare @getDate  datetime,@getDateYear  int,@getDateMonth  int,@getDateDay int,@returnDate datetime,@returnDateYear int,@returnDateMonth int,@returnDateDay int
 set @getDate=cast(@yourDate as datetime)
 set @getDateYear=year(@getDate)   --传入日期年份
 set @getDateMonth=month(@getDate)   --传入日期月份
 set @getDateDay=day(@getDate)   --传入日期天

 set @returnDate=cast(str(@getDateYear)+'-'+str(@getDateMonth)+'-01' as datetime)-1   --上月最后一天
 set @returnDateYear=year(@returnDate)   --上月最后一天 年份
 set @returnDateMonth=month(@returnDate)   --上月最后一天 月份
 set @returnDateDay=day(@returnDate)   --上月最后一天 天

 if @getDateDay>@returnDateDay   --传入日期天数大于上月末天数 返回上月最后一天
  begin
   set  @returnDate=@returnDate
  end
 else
  begin
   set @returnDate=cast(str(@returnDateYear)+'-'+str(@returnDateMonth)+'-'+str(@getDateDay) as datetime)
  end
 return convert(varchar(10),@returnDate,120)
END

5)
CREATE FUNCTION GetPreMonthLastDay(@yourDate  varchar(10))  --上月最后一天日期
RETURNS varchar(10)
AS 

BEGIN
 declare @getDate  datetime,@getDateYear  int,@getDateMonth  int,@returnDate datetime
 set @getDate=cast(@yourDate as datetime)
 set @getDateYear=year(@getDate)
 set @getDateMonth=month(@getDate)
 set @returnDate=cast(str(@getDateYear)+'-'+str(@getDateMonth)+'-01' as datetime)-1
 return convert(varchar(10),@returnDate,120)
END


6)
CREATE FUNCTION GetMonthFristDay(@yourDate  varchar(10))  --取得本月初日期
RETURNS varchar(10)
AS 

BEGIN
 declare @getDate  datetime,@getDateYear  int,@getDateMonth  int,@returnDate datetime
 set @getDate=cast(@yourDate as datetime)
 set @getDateYear=year(@getDate)   --传入日期年份
 set @getDateMonth=month(@getDate)   --传入日期月份
 set @returnDate=cast(str(@getDateYear)+'-'+str(@getDateMonth)+'-01' as datetime)   --本月初日期
 return convert(varchar(10),@returnDate,120)
END

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值