首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有可变年份的固定日期(SQL Server)

具有可变年份的固定日期(SQL Server)
EN

Stack Overflow用户
提问于 2014-10-14 21:37:49
回答 5查看 4.1K关注 0票数 0

我正试着为去年、今年和明年定一个固定的日期,例如11月1日。

我可以申报我的年龄

代码语言:javascript
运行
复制
 declare @lastyear  int;    set @lastyear = year (getdate()-365) 
 declare @thisyear  int;    set @thisyear = year (getdate()) 
 declare @nextyear  int;    set @nextyear = year (getdate()+365)

但我在努力想知道如何确定每年的固定日期。

我想声明固定的日期和月份。

代码语言:javascript
运行
复制
declare @fixeddate; set @fixeddate = CONVERT(VARCHAR(6), '2014.11.01', 107)

然后追加年份,但我一无所获。

类似于:

@nextyear + @fixeddate (作为日期!)

帮助;-)

EN

回答 5

Stack Overflow用户

发布于 2014-10-14 21:49:06

尝试如下所示:

代码语言:javascript
运行
复制
DECLARE @fixedDate VARCHAR(4) = '1101'
DECLARE @addYears INT = 0 -- Add (+)/(-) values to get future and past years
DECLARE @currentYear VARCHAR(4) = CONVERT(VARCHAR(4), Year(Getdate()) + @addYears)

DECLARE @date DATE = CONVERT(DATE, @currentYear + @fixedDate)

如果还需要包含time

代码语言:javascript
运行
复制
DECLARE @fixedDate VARCHAR(13) = '1101 23:59:59' --Change the length as VARCHAR(13)
DECLARE @addYears INT = 0 -- Add (+)/(-) values to get future and past years
DECLARE @currentYear VARCHAR(4) = CONVERT(VARCHAR(4), Year(Getdate()) + @addYears)

--Declare @date as DATETIME and function as CONVERT(DATETIME, ...)
DECLARE @date DATETIME = CONVERT(DATETIME, @currentYear + @fixedDate)
票数 2
EN

Stack Overflow用户

发布于 2014-10-14 21:46:56

代码语言:javascript
运行
复制
DECLARE @FixedDate DATE = '2014-11-01';
DECLARE @NextYearFixed DATE = DATEADD(year, 1, @FixedDate) -- 2015-11-01
DECLARE @PreviousYearFixed DATE = DATEADD(year, -1, @FixedDate) -- 2013-11-01
票数 1
EN

Stack Overflow用户

发布于 2014-10-14 21:49:54

您可以使用DATEADD/DATEDIFF对来完成这类工作:

代码语言:javascript
运行
复制
select
  DATEADD(year,DATEDIFF(year,'20010101',GETDATE()),'20011101') as NovThisYear,
  DATEADD(year,DATEDIFF(year,'20010101',GETDATE()),'20001101') as NovLastYear,
  DATEADD(year,DATEDIFF(year,'20010101',GETDATE()),'20021101') as NovNextYear

您只需使用两个日期,这两个日期之间具有恒定的关系,显示出您想要的最终关系(例如,在上面的第二对日期中,我选择了第一个日期('20010101')前一年的11月1日('20001101') )

结果:

代码语言:javascript
运行
复制
NovThisYear             NovLastYear             NovNextYear
----------------------- ----------------------- -----------------------
2014-11-01 00:00:00.000 2013-11-01 00:00:00.000 2015-11-01 00:00:00.000
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26362268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档