我在这里要做的是向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
我只是想让这个给一个值......
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))
答案 0 :(得分:2)
将日期分解为字符串并将其重建为日期几乎不是正确的解决方案。
假设我理解了这个问题,您希望从数据库中获取日期,并将年份部分操作为当前年份之前的一年。
试试这个:
SELECT tblDateApt.[Date],
DATEADD(Month,
6,
DATEADD(YEAR,
YEAR(GETDATE()) - 1 - YEAR(tblDateApt.[Date]),
tblDateApt.[Date])
)
FROM tblDateApt
编辑后,将数据库中的日期记录在去年后的6个月之后。
答案 1 :(得分:1)
这将使您从tblDateApt.Date
取得的DateTime值减少一年并增加6个月(根据您的意图):
SELECT DATEADD(month,
6,
DATEADD(year,
YEAR(GETDATE()) - YEAR(tblDateApt.date) - 1,
tblDateApt.date
)
)
避免与文字内容进行任何转换。