SQL 使用变量设置日期

SQL Setting a Date Using variables

我有以下T-SQL

declare @earliest_date date;
begin
    if month(getdate()) < 7
    begin
        set @earliest_date = cast(cast(year(getdate()) -1 as varchar) + '07-01' as date)
    END
    ELSE
    begin
        set @earliest_date =  cast(cast(year(getdate()) as varchar) + '07-01' as date)
    end
end
select @earliest_date

我收到以下错误消息:

Conversion failed when converting date and/or time from character string.

为什么我总是收到此错误消息?

编辑#1

这是我正在尝试做的事情:

我正在尝试设置一个日期变量。如果今天日期的月份<7,我希望年份设置为去年,否则设置为今年。

因此,对于 1 月至 6 月,年份为 2020 年,否则为 2021 年,以今年为例。

如果你想要去年的7月1日,使用:

datefromparts(year(getdate()) - 1, 7, 1)

如果你想在今年 7 月 1 日,使用:

datefromparts(year(getdate()), 7, 1)

如果您想要最近的 7 月在前,请从日期中减去 6 个月:

datefromparts(year(dateadd(-6, month, getdate())), 7, 1)

您可以将这些保存到变量中。或者只是在查询中使用它们。

declare @earliest_date date;
begin
  if month(getdate()) < 7
  begin
    set @earliest_date = cast(cast(year(getdate()) -1 as varchar(4)) + '-07-01' as date)
  END
  ELSE
  begin
    set @earliest_date =  cast(cast(year(getdate()) as varchar(4)) + '-07-01' as date)
  end
 end
 select @earliest_date

如果您想使用自己的方式,请参阅上文