如何查找两个月的开始和结束日期? SQL Server

时间:2015-02-09 13:44:55

标签: sql-server date

如何查找两个月的开始和结束日期?

示例:

  • 现在日期:09/02/2015;开课日期:01/01/2015;截止日期:2015年2月28日。
  • 当前日期:05/06/2015;开课日期:01/05/2015;截止日期:2015年6月30日

1 个答案:

答案 0 :(得分:1)

假设您没有SQL Server 2012或更新版本,这将起作用:

DECLARE @Date DATETIME = '09-Feb-2015'

SELECT  DATEADD(MONTH, DATEDIFF(MONTH, 0, @Date), 0) AS Start,
        DATEADD(DAY,-1,DATEADD(mm, DATEDIFF(MONTH,0,@Date)+1,0))

如果您有SQL 2012,可以使用EOMONTH

SELECT  DATEADD(MONTH, DATEDIFF(MONTH, 0, @Date), 0) AS Start,
        EOMONTH(@Date)

<强>更新

在你想要双月刊的评论中添加,并假设这意味着你将这一年分为2个月的段,其中JAN / FEB作为第一对,MAR / APR是下一个,依此类推,这将有效:

SELECT  DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(MONTH, -1+MONTH(@Date)%2, @Date)), 0) AS StartOfPeriod,
        DATEADD(DAY, -1, DATEADD(mm, DATEDIFF(MONTH, 0, DATEADD(MONTH, MONTH(@Date)%2, @Date)) + 1, 0))