闰年 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 个月后的日期。
我在这里要做的是向 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 个月后的日期。