如何在sql server中使用month id获取一个月的第一天和最后一天?

时间:2017-05-15 04:45:41

标签: sql-server

假设我有月份4月4日和年份作为当年,现在如何获得第4个月的第一个和最后一个日期?

2 个答案:

答案 0 :(得分:1)

对于SQL 2012+,您可以使用datefrompartseomonth,例如以下查询:

DECLARE @Year int = 2017,
      @Month int = 5
SELECT datefromparts(@Year, @Month, 1) AS TheFirstDateOfMonth,
     eomonth(datefromparts(@Year, @Month, 1)) AS TheFirstDateOfMonth

对于旧版本,您可以使用dateadd

SELECT  
    dateadd(month, @Month - 1, CAST(@Year AS varchar(4)) + '0101') AS TheFirstDateOfMonth,
    dateadd(day, -1 , dateadd(month, @Month , CAST(@Year AS varchar(4)) + '0101')) AS TheLastDateOfMonth

答案 1 :(得分:0)

 DECLARE @monthId int  = 4
DECLARE @Year int = YEAR (GETDATE())

使用monthid的最后一天

 SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,'' +CONVERt(VARCHAR(5),@Year)+ '-' + CONVERt(VARCHAR(5),@monthId) + '-01')+1 ,0))

使用monthid的第一天的月份

 SELECT DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,'' +CONVERt(VARCHAR(5),@Year)+ '-' + CONVERt(VARCHAR(5),@monthId) + '-01'),0))