Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在sql server中使用月份id获取一个月的第一天和最后一天?_Sql Server - Fatal编程技术网

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

Sql server 如何在sql server中使用月份id获取一个月的第一天和最后一天?,sql-server,Sql Server,假设我有4个月,今年是4月,现在我如何得到4月的第一个和最后一个日期 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)) SELE

假设我有4个月,今年是4月,现在我如何得到4月的第一个和最后一个日期

 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))
 SELECT DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,'' +CONVERt(VARCHAR(5),@Year)+ '-' + CONVERt(VARCHAR(5),@monthId) + '-01'),0))
每月第一天使用monthid

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

对于SQL 2012+您可以使用
datefromparts
eomonth
进行如下查询:

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
第4个月的第一个和最后一个日期:第一个=
01.monthId.Year
和最后一个=
DATEADD(日期-1,'01.monthId+1.Year')