首页 > 解决方案 > 变量声明取决于 getdate

问题描述

我正在尝试使用依赖于 getdate 的变量创建一个语句。

例如,如果getdate()是 31-05-2021,那么我的变量@peiljaarstart必须是“2021-01-01”,如果月份getdate() = 1必须@peiljaarstart是“2020-01-01”。这在下面的声明中起作用。

问题是要设置的变量@peiljaarend必须是month(getdate())负1。带有一个额外的子句,如果是,month(getdate()) = 1那么变量@peiljaareind必须是上一年的。

希望有人可以帮助我解决这个问题。

陈述:

declare @peiljaar date
declare @peiljaarstart date
declare @peiljaareind varchar(10)

--bepalen begindatum peiljaar op basis van lopende maand is deze 1 dan vorig jaar meten anders huidig jaar
set @peiljaar = case 
                when convert(varchar,(month(getdate()))) <> '1' then convert(varchar,(year(getdate()))) 
                else convert(varchar,(year(getdate())-1)) end

set @peiljaarstart =   left(@peiljaar,4) 


--bepalen einddatum peiljaar lopende maand minus 1 tenzij lopende maand = 1 dan vorig jaar maand 12
set @peiljaareind = convert(varchar, (left(@peiljaar,4)) ) + '-' + SUBSTRING(CONVERT(nvarchar(6),getdate(), 112),5,2) + '-' + SUBSTRING(CONVERT(nvarchar(6),getdate(), 105),1,2)


--show values 


select 
   @peiljaar
,  @peiljaarstart
, @peiljaareind

标签: sqlvariables

解决方案


您似乎想要当前年份的第一天和最后一天的变量。那将是:

set @yearstart = datefromparts(year(getdate()), 1, 1);
set @yearend = datefromparts(year(getdate()), 12, 31);

推荐阅读