*编辑:对于最初我有多不清楚,我深表歉意。基本上,
@startDate
应将其设置为01-01-XXXX,其中XXXX是当今日期的一部分。它正在与另一个变量进行比较。我希望这会阐明一切。
您问题的答案是“否”。 变量
DATETIME
是日期时间。 这没有道理:
@StartDate
它没有意义。 一个看起来像一年不是约会的整数。
set @startDate = 2015
我认为这将起作用(对于SQL-Server):
set @startDate = dateadd(day,
1 - datepart(dayofyear, getdate()),
cast(getdate() as date)
) as FirstDayOfYear
这将向您展示正在发生的事情:
SET @startDate = cast(YEAR(GETDATE()) as varchar(4))
SET @startDate = cast(DATEPART(yyyy,GETDATE()) as varchar(4))
DECLARE @startDate datetime
SET @startDate = '20150101'
select @startdate
SET @startDate = YEAR(GETDATE())
select @startdate
SET @startDate = cast(YEAR(GETDATE()) as varchar(4))
select @startdate
SET @startDate = DATEPART(yyyy,GETDATE())
select @startdate
SET @startDate = cast(DATEPART(yyyy,GETDATE()) as varchar(4))
select @startdate
和
YEAR(GETDATE())
将返回日期的一年,因此,如果您今天运行它们,您将回来,而不是您似乎想要的
date。
DATEPART(yyyy,GETDATE());
trone使用以下
declare @startdate date;
选择@startdate = concat(年(getDate()),'-01-01');