在做报表的时候,有个本月和上月同期对比的业务,开始是这样的:2月27号对比到上月1月27号 ,2月28号对比到1月28号,领导要求2月28号对比到1月31号。
需求就是月末跟月末对比,非月末跟上月同期对比,于是调整下查询的开始日期和结束日期:
- 今天不是月末的情况:
declare @start datetime --开始日期
declare @end datetime -- 结束日期
declare @today datetime /*今天*/
declare @tomorrow datetime /*明天*/
set @today = '2018-2-27 23:55:00'
set @start = CONVERT(varchar(7), dateadd(mm,-1,@today) , 120) + '-01'
set @tomorrow =dateadd(day,1,@today)
-- 如果今天是月末,则结束时间设置为本月1号
if datediff(month,@today,@tomorrow) = 0
set @end = dateadd(mm,-1,@today)
else
set @end = CONVERT(varchar(7), @today , 120) + '-01'
select @start 开始 ,@end 结束
- 今天是月末的情况
declare @start datetime --开始日期
declare @end datetime -- 结束日期
declare @today datetime /*今天*/
declare @tomorrow datetime /*明天*/
set @today = '2018-2-28 23:55:00'
set @start = CONVERT(varchar(7), dateadd(mm,-1,@today) , 120) + '-01'
set @tomorrow =dateadd(day,1,@today)
-- 如果今天是月末,则结束时间设置为本月1号
if datediff(month,@today,@tomorrow) = 0
set @end = dateadd(mm,-1,@today)
else
set @end = CONVERT(varchar(7), @today , 120) + '-01'
select @start 开始 ,@end 结束