如何使用GETDATE()
SQL Server 中的函数来计算执行查询前一年的日期?我想在查询中使用这个值。
例如:
Select LTRating, RHDate
from Accounts and If LTRating ='D' then RHDate = CURRENTDATE()-365
我希望检索值为“D”且日期正好是一年前的所有LTRating
列值。LTRating
如何使用GETDATE()
SQL Server 中的函数来计算执行查询前一年的日期?我想在查询中使用这个值。
例如:
Select LTRating, RHDate
from Accounts and If LTRating ='D' then RHDate = CURRENTDATE()-365
我希望检索值为“D”且日期正好是一年前的所有LTRating
列值。LTRating
您可以使用DATEADD并访问恰好在一年前的日期:
dateadd(yy, -1, getdate())
例如
select
LTRating
, case when LTRating = 'D' then dateadd(yy, -1, getdate()) else RHDate end
from Accounts
Select LTRating, RHDate
from Accounts
where LTRating <> 'D'
OR (LTRating ='D' and RHDate = DATEADD(year, -1, GETDATE()))
select LTRating, RHDate
from Accounts
where datediff (yy, RHDate, getdate()) = 1
通过使用datediff
函数可以获得月份和年份的差异
select * from yourtable where RHDate = DATEADD(yy,-1,getdate())
或者使用 datediff 函数:
Select ...
from table
where datediff(Day, RHDate, getdate()) = 365
select [LTRating], [RHDate] from [Accounts]
where [LTRating] = 'D' AND [RHDate] >= DATEADD(year, -1, GETDATE())
将 -1 添加到当前日期的年份基本上只是反转函数 dateadd 因为没有 dateminus :)
以下语句返回
LTRating
不是“D”的;和LTRating
值为“D”且RHDate
正好是一年;或者LTRating
为“D”且RHDate
超过一年的值;或者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 类型包括时间分量(至少到秒),因此,在大多数情况下,日期时间列比较是使用>
or<
运算符完成的。