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