我正试着为去年、今年和明年定一个固定的日期,例如11月1日。
我可以申报我的年龄
declare @lastyear int; set @lastyear = year (getdate()-365)
declare @thisyear int; set @thisyear = year (getdate())
declare @nextyear int; set @nextyear = year (getdate()+365)但我在努力想知道如何确定每年的固定日期。
我想声明固定的日期和月份。
declare @fixeddate; set @fixeddate = CONVERT(VARCHAR(6), '2014.11.01', 107)然后追加年份,但我一无所获。
类似于:
@nextyear + @fixeddate (作为日期!)
帮助;-)
发布于 2014-10-14 21:49:06
尝试如下所示:
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
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)发布于 2014-10-14 21:46:56
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发布于 2014-10-14 21:49:54
您可以使用DATEADD/DATEDIFF对来完成这类工作:
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') )
结果:
NovThisYear NovLastYear NovNextYear
----------------------- ----------------------- -----------------------
2014-11-01 00:00:00.000 2013-11-01 00:00:00.000 2015-11-01 00:00:00.000https://stackoverflow.com/questions/26362268
复制相似问题