SQL年(getDate())

问题描述 投票:0回答:3
仅第一个,即硬编码的日期,即预期。其他两个返回所有正在查询的记录。我在这里错过了什么吗?

*编辑:对于最初我有多不清楚,我深表歉意。基本上,

@startDate
应将其设置为01-01-XXXX,其中XXXX是当今日期的一部分。它正在与另一个变量进行比较。我希望这会阐明一切。
    

您问题的答案是“否”。 变量

DATETIME

是日期时间。  这没有道理:
@StartDate

它没有意义。 一个看起来像一年不是约会的整数。
sql sql-server t-sql variables
3个回答
3
投票

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))

2
投票

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

0
投票
如果您想将日期价值强加于本年度的开始,则一种方法是:

DATEPART(yyyy,GETDATE());

trone使用以下
declare @startdate date;
选择@startdate = concat(年(getDate()),'-01-01');
    
	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.