MS SQL Server Quarter Function

近段时间开发的ERP系统,需要涉及至季度的一些日期。在系统中,实现了三个函数。

 

获取某一天的所在季度的第一天:

SET ANSI_NULLS  ON
GO
SET QUOTED_IDENTIFIER  ON
GO

--  =============================================
--
 Author:         Insus.NET
--
 Create date:    2012-08-24
--
 Description:    获取某一天所在季度的第一天。
--
 =============================================
CREATE  FUNCTION  [ dbo ]. [ udf_FirstDayOfQuarter ] 
(
      @Date  DATETIME
 )
RETURNS  DATETIME
BEGIN    
RETURN  CAST( YEAR( @DateAS  VARCHAR( 4))  +  CASE  WHEN  MONTH( @DateIN (  1,   2,   3THEN  ' -01-01 '
                                               WHEN  MONTH( @DateIN (  4,   5,   6THEN  ' -04-01 '
                                               WHEN  MONTH( @DateIN (  7,   8,   9THEN  ' -07-01 '
                                               WHEN  MONTH( @DateIN ( 101112THEN  ' -10-01 '
END
END

 

获取某一天所在季度的最后一天:

SET ANSI_NULLS  ON
GO
SET QUOTED_IDENTIFIER  ON
GO

--  =============================================
--
 Author:         Insus.NET
--
 Create date:    2012-08-24
--
 Description:    获取某一天所在季度的最后一天。
--
 =============================================
CREATE  FUNCTION  [ dbo ]. [ udf_LastDayOfQuarter ] 
(
      @Date  DATETIME
 )
RETURNS  DATETIME
BEGIN    
RETURN  CAST( YEAR( @DateAS  VARCHAR( 4))  +  CASE  WHEN  MONTH( @DateIN (  1,   2,   3THEN  ' -03-31 '
                                               WHEN  MONTH( @DateIN (  4,   5,   6THEN  ' -06-30 '
                                               WHEN  MONTH( @DateIN (  7,   8,   9THEN  ' -09-30 '
                                               WHEN  MONTH( @DateIN ( 101112THEN  ' -12-31 '
END
END

 

 季度函数:

SET ANSI_NULLS  ON
GO
SET QUOTED_IDENTIFIER  ON
GO
--  =============================================
--
 Author:         Insus.NET
--
 Create date:    2012-08-24
--
 Description:    季度函数。
--
 =============================================
ALTER  FUNCTION  [ dbo ]. [ udf_Quarter ]

    @Year  INT
)
RETURNS  @t  TABLE ( [ Quarter ]  TINYINT, [ FirstDate ]  DATETIME, [ LastDate ]  DATETIME)
BEGIN
INSERT  INTO  @t ( [ Quarter ], [ FirstDate ], [ LastDate ]VALUES ( 1CAST( @Year  AS  VARCHAR( 4))  +  ' -01-01 ', CAST( @Year  AS  VARCHAR( 4))  +  ' -03-31 '),
                                                         ( 2CAST( @Year  AS  VARCHAR( 4))  +  ' -04-01 ', CAST( @Year  AS  VARCHAR( 4))  +  ' -06-30 '),
                                                         ( 3CAST( @Year  AS  VARCHAR( 4))  +  ' -07-01 ', CAST( @Year  AS  VARCHAR( 4))  +  ' -09-30 '),
                                                         ( 4CAST( @Year  AS  VARCHAR( 4))  +  ' -10-01 ', CAST( @Year  AS  VARCHAR( 4))  +  ' -12-31 ')

RETURN 
END

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值