如何在SQL Server中使用GETDATE()函数来选择列值?

时间:2012-10-04 09:33:55

标签: sql sql-server tsql

如何使用SQL Server中的GETDATE()函数计算查询执行前一年的日期?我想在查询中使用此值。

例如:

 Select LTRating, RHDate 
 from Accounts and If LTRating ='D' then RHDate = CURRENTDATE()-365

我希望检索LTRating值为'D'并且日期恰好是一年前的所有LTRating列值。

7 个答案:

答案 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)

以下语句返回

  • 不是'D'的所有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()))