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
如果您想使用自己的方式,请参阅上文
我有以下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
如果您想使用自己的方式,请参阅上文