27,579
社区成员
发帖
与我相关
我的任务
分享
where
between dateadd(mm,datediff(mm,0,@d)-3,0)
and dateadd(dd,-1,dateadd(mm,datediff(mm,0,@d),0))
declare @dt datetime
declare @start_date datetime
declare @end_date DATETIME
set @dt='2010-7-17'
set @start_date=DATEADD(dd,-datepart(d,@dt)+1,DATEadd(mm,-3,@dt))
SELECT @start_date
set @end_date=DATEADD(dd,-1,DATEADD(mm,3,@start_date))
SELECT @end_date
declare @d datetime
set @d='2010-06-27'
select dateadd(mm,datediff(mm,0,@d)-3,0),dateadd(dd,-1,dateadd(mm,datediff(mm,0,@d),0))
/*
----------------------- -----------------------
2010-03-01 00:00:00.000 2010-05-31 00:00:00.000
(1 行受影响)
*/
-- 更严格的查询要求应该是:
where date_column >= last_day(add_months(trunc(sysdate),-4))+1
and date_column < last_day(add_months(trunc(sysdate),-3))+1;
select convert(varchar(7),dateadd(mm,-4,getdate()),120) + '-01' + '--'
+
convert(varchar(10),cast(convert(varchar(7),getdate(),120) + '-01' as datetime) - 1,120)
/*
----------------------
2010-03-01--2010-06-30
(所影响的行数为 1 行)
*/
where date_column >= last_day(add_months(trunc(sysdate),-4))+1
and date_column <= last_day(add_months(trunc(sysdate),-3));