闰年 SQL CONVERT GETDATE() 出错

Error with SQL CONVERT GETDATE() for leap years

我在这里要做的是向 GETDATE() 添加一个时间组件,因为它正在转换为 varchar(25)。这是我的陈述,我该怎么做?

CONVERT(Varchar(25),YEAR(GETDATE())-1)

会不会是 CONVERT(Varchar(25),year(getDate()) -1)

此 CONVERT 实际上是以下内容的一部分:

DATEADD(m, 6,CAST(CONVERT(Varchar(25),MONTH(tblDateApt. Date)) +
'/' + CONVERT(Varchar(25),DAY(tblDateApt. Date)) 
+ '/' + CONVERT(Varchar(25),YEAR(GETDATE())-1)  As DateTime))

问题是当我 运行 这条语句在闰年日期出现错误。我正在尝试在 getDate 被转换为 DATETIME

之前添加一个时间

编辑 2

我只是想让这个给 return 一个值...

select DATEADD(m, 6,CAST(CONVERT(Varchar(25),MONTH('2/29/2016')) + '/' + CONVERT(Varchar(25),DAY('2/29/2016')) + '/' + CONVERT(Varchar(25),YEAR(GETDATE())-1)   As DateTime))

这将使您从 tblDateApt.Date 中获取的 DateTime 值减少一年并增加 6 个月(根据您的意图):

SELECT DATEADD(month,
               6,
               DATEADD(year, 
                       YEAR(GETDATE()) - YEAR(tblDateApt.date) - 1, 
                       tblDateApt.date
                      )
              )

避免与文本内容进行任何转换。

将日期分解为字符串并将其重建为日期几乎不是正确的解决方案。

假设我理解这个问题,您想从数据库中获取日期,并将年份部分操作为当前年份的前一年。

试试这个:

SELECT  tblDateApt.[Date], 
        DATEADD(Month, 
                6, 
                DATEADD(YEAR, 
                        YEAR(GETDATE()) - 1 - YEAR(tblDateApt.[Date]),
                        tblDateApt.[Date])
        )
FROM tblDateApt

编辑为在将数据库中的日期操作到去年之后得到 6 个月后的日期。