如何使用SQL Server中的GETDATE()
函数计算查询执行前一年的日期?我想在查询中使用此值。
例如:
Select LTRating, RHDate
from Accounts and If LTRating ='D' then RHDate = CURRENTDATE()-365
我希望检索LTRating
值为'D'并且日期恰好是一年前的所有LTRating
列值。
答案 0 :(得分:2)
您可以使用DATEADD并在一年前访问日期:
dateadd(yy, -1, getdate())
e.g。
select
LTRating
, case when LTRating = 'D' then dateadd(yy, -1, getdate()) else RHDate end
from Accounts
答案 1 :(得分:0)
或使用datediff函数:
Select ...
from table
where datediff(Day, RHDate, getdate()) = 365
答案 2 :(得分:0)
select LTRating, RHDate
from Accounts
where datediff (yy, RHDate, getdate()) = 1
使用datediff
函数可以在几个月和几年内获得差异
答案 3 :(得分:0)
select * from yourtable where RHDate = DATEADD(yy,-1,getdate())
答案 4 :(得分:0)
select [LTRating], [RHDate] from [Accounts]
where [LTRating] = 'D' AND [RHDate] >= DATEADD(year, -1, GETDATE())
将-1添加到当前日期的年份基本上只是反转函数dateadd,因为没有dateminus:)
答案 5 :(得分:0)
以下语句返回
LTRating
;和LTRating
值为'D'且RHDate
完全一年; OR LTRating
值为'D'且RHDate
早于一年; OR LTRating
值为“D”且RHDate
更年轻一年。SELECT LTRating, RHDate
FROM Accounts
WHERE ( LTRating != 'D'
-- use this for exact comparison (including seconds!)
OR RHDate = DATEADD(YEAR, -1, GETDATE())
-- use this for RHDate older than one year
OR RHDate < DATEADD(YEAR, -1, GETDATE())
-- use this for RHDate younger than one year
OR RHDate > DATEADD(YEAR, -1, GETDATE())
);
请注意,DATETIME和SMALLDATETIME类型包括时间组件(至少到第二个),因此,在大多数情况下,使用>
或<
运算符完成日期时间列比较
答案 6 :(得分:0)
Select LTRating, RHDate
from Accounts
where LTRating <> 'D'
OR (LTRating ='D' and RHDate = DATEADD(year, -1, GETDATE()))