Sql server 如何找到两个月期间的开始和结束日期?SQL Server
如何找到两个月期间的开始和结束日期 例如:Sql server 如何找到两个月期间的开始和结束日期?SQL Server,sql-server,date,Sql Server,Date,如何找到两个月期间的开始和结束日期 例如: 当前日期:2015年2月9日;开始日期:2015年1月1日;截止日期:2015年2月28日 当前日期:2015年6月5日;开始日期:2015年5月1日;截止日期:2015年6月30日 假设您没有SQL Server 2012或更新版本,这将起作用: DECLARE @Date DATETIME = '09-Feb-2015' SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, @Date), 0) AS Start,
- 当前日期:2015年2月9日;开始日期:2015年1月1日;截止日期:2015年2月28日
- 当前日期:2015年6月5日;开始日期:2015年5月1日;截止日期:2015年6月30日
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))
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))
如果您有SQL 2012,则可以使用:
更新
在您添加您希望每两个月一次的评论后,假设这意味着您将一年分成两个月,第一对是1月/2月,第二对是3月/4月,依此类推,这将起作用:
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))
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))
我需要两个月一次这完全符合你的要求。上个月的第一天和指定月份的最后一天。不完全正确。我需要的开始日期和结束日期根据当前日期两个月。如果当前日期为2015年5月1日,则起始日期应为2015年1月1日,最终日期应为2015年2月28日。那么如何定义“当前两个月”?一年将分为六个期间,即每两个月一次。在这种情况下,我需要根据当前日期确定期间的开始和结束日期。