选择
@begindate = dateadd(mm,-1,CAST(datepart(mm,getdate()) AS VARCHAR(2)) + '/15/' + CAST(datepart(YYYY,getdate() -1) AS varchar(4))),
@enddate = CAST(datepart(mm,getdate()) AS VARCHAR(2)) + '/14/' + CAST(datepart(YYYY,getdate() -1) AS varchar(4))
现在,此代码返回5月15日 - 6月14日的日期。这些是我需要的日期,但我还需要它是在2013年,这将返回2014年。我已经尝试做dateadd(yyyy,-1)但它不起作用。所以我想知道是否有人知道我将如何能够获得去年的约会。
答案 0 :(得分:0)
声明@begindate datetime 声明@enddate datetime
设置@begindate = dateadd(mm,-1,CAST(datepart(mm,getdate())AS VARCHAR(2))+' / 15 /' + CAST(datepart(YYYY,getdate) ()) - 1 AS varchar(4)))
设置@enddate = CAST(datepart(mm,getdate())AS VARCHAR(2))+' / 14 /' + CAST(datepart(YYYY,getdate()) - 1 AS varchar(4))
选择@begindate 联合所有 选择@enddate
答案 1 :(得分:0)
如果DateAdd无法正常工作,那么您的实施中一定存在错误。在现有代码之后尝试这样:
SET @begindate = dateadd(year, -1, @begindate);
SET @enddate = dateadd(year, -1, @enddate)
答案 2 :(得分:0)
您可以使用日期变量和日期算法来代替使用字符串:
declare @lastyear date=dateadd(yy,-1,cast(getdate() as date))
declare @currentMonth date=dateadd(d,-day(@lastyear),@lastyear)
declare @prevMonth date=dateadd(m,-1,@currentMonth)
select @lastyear,DATEADD(d,14,@currentMonth),DATEADD(d,15,@prevMonth)
在SQL Server 2012中,它更加容易,因为您可以使用DATEFROMPARTS函数从其各个部分构建新日期。